我有jquery提交和发布的问题。我想提交一个表单并将其发布到我的php进行检查,并将php结果返回给表单。但是,我有数据返回的问题,它基本上忽略了结果。
这是我的html表单:
<form id="form" method="post">
<p id="status">Status:</p>
<p class="text">
<label for="name" class="label">Name:</label>
<input type="text" id="name" name="name" value="" size="30" />
</p>
<p class="text">
<label for="email" class="label">Email:</label>
<input type="text" id="email" name="email" value="" size="30" />
</p>
<p class="submit">
<input type="submit" name="send_btn" id="send_btn" value="Send" />
</p>
</form>
这是我提交和发布的javascript:
$('#form').submit(function(e) {
e.preventDefault();
var name = $('#name').val();
var email = $('#email').val();
$.post('notify.php', {name: name, email: email}, function(data) {
$('#status').html(data);
});
});
这是检查并返回数据的php:
<?php
if (isset($_POST['name'], $_POST['email']))
{
$name = htmlentities($_POST['name']);
$email = htmlentities($_POST['email']);
if ($name == "myname")
{
$output = 'It matches!';
}
else
{
$output = 'No matches!";
}
}
?>
请注意出错了什么?谢谢。
答案 0 :(得分:2)
您需要在php脚本中echo
或die
,这样您的函数才能获得结果。
所以,将脚本更改为:
<?php
if (isset($_POST['name'], $_POST['email']))
{
$name = htmlentities($_POST['name']);
$email = htmlentities($_POST['email']);
if ($name == "myname")
{
$output = 'It matches!';
}
else
{
$output = 'No matches!';
}
echo $output;
}
?>
注意第三行到最后一行,我在调用echo $output
- 你的回音将从你的ajax调用中返回。如果你想变得更复杂,你应该返回一个JSON对象。
$results = array("result" => "It Matches!", "foo" => "bar");
echo json_encode($results);
编辑:您还需要在其他地方结束时将"
更改为'
。
答案 1 :(得分:1)
在PHP上打印答案 评论建议 echo $ output;
在行尾
答案 2 :(得分:0)
在您的PHP代码中,您实际上并没有将$ output写入页面。
<?php
// your code
echo $output;
?>
答案 3 :(得分:0)
别忘了
返回false;
如果你忘了它,提交时的表格将会改写,而ajax将会失败;
$('#form').submit(function(e) {
e.preventDefault();
var name = $('#name').val();
var email = $('#email').val();
$.post('notify.php', {name: name, email: email}, function(data) {
$('#status').html(data);
});
return false;
});