your logic explicitly says:
when <space> -> force.z=350 + play sound
you never told your game what you really want.
I suggest you add a sensor that measures if you are on the ground. For example a ray sensor or a collision sensor.
Hints:
You do not need to enable [tap]. It has no effect on your setup.
I suggest to use sensor names that tell the semantic of what they measure. For example “space” tells that the space key is measured. You can easily see that in the configuration. There is no need to repeat it in the name. Imagine you want to change the key … then you would need to rename the sensor. The semantic is why you want to measure the space key. In your case it would be “When the user wants to jump” or “When the user requests a jump”. So you could shorten it to something like “jump is requested” or “want to jump” or simply “jump”. This way you tell what you want, without detailing how it is measured. If it does not work as expected a reader can still guess what it should do. As additional benefit it is easier to differentiate between different requests that are triggered by the same input (imagine mouse click events, typically you have just one mouse button to do that).
“want to jump” --> “jump” + “play jumping sound” + “play jumping action”
or
“want to jump” + “is on ground” -> AND -> “jump” + “play jumping sound” + “play jumping action”
I hope it helps