2

for some reason isset($_post) doesn't work when i use js form.submit() how i can resolve that without changing type of input from button to submit and just with using vanilla javascript because i need both of them.

code html:

<form name="user_verification" action="action.php" method="POST">
 Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="button" onclick="myFunction(this)" name="button" value="submit">
</form>

and here is the php script in action.php file

if($_SERVER['REQUEST_METHOD']=="POST")
{
if(isset($_POST['button'])) 
{
echo 'yes';
}else{
echo 'no';
}
}

and here is the javascript in action.js file

function myFunction(button)
{
//some code
const form=button.parentNode;
form.submit();}

4
  • What output are u getting? “No” or blank? Commented Apr 16, 2022 at 15:59
  • You have a typo - function spelling in onclick="myFucntion(this)" should be `onclick="myFunction1(this)" Commented Apr 16, 2022 at 16:00
  • i am getting no output, sorry i mistyped the name of function when writing post here. i will update Commented Apr 16, 2022 at 16:02
  • @Tushar now I cleared all the typos please feel free to test it Commented Apr 16, 2022 at 16:39

1 Answer 1

2

Actually the problem didn't raise from the PHP. Buttons' value is sent when the form is directly submitted by them (In this case, it seems impossible).

Suggestion 1: use another field to check form submission.

if($_SERVER['REQUEST_METHOD'] == 'POST') {
    if(isset($_POST['email'])) {
        echo 'yes';
    } else {
        echo 'no';
    }
}

Suggestion 2: add hidden input in the HTML.

<form name="user_verification" action="test.php" method="POST">
    Name: <input type="text" name="name"><br>
    E-mail: <input type="text" name="email"><br>
    <input type="hidden" name="button" value="submit">
    <input type="button" onclick="myFunction(this)">
</form>

Suggestion 3: change button type to hidden before submitting.

function myFunction(button) {
    // some code
    button.setAttribute('type', 'hidden');
    const form=button.parentNode;
    form.submit();
    button.setAttribute('type', 'button');
}
Sign up to request clarification or add additional context in comments.

1 Comment

the third solution is the most interesting one.Thank you

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.