我发布的表单包含以下内容:
if ( flag ) {
jQuery.ajax({
url: 'submit_licence.php',
dataType: 'json',
type: 'POST',
data: 'flag=' + flag + '®ion=' + jQuery('#licenceRegion').val() + '&lnum=' + jQuery('#enterLicence').val() + '&fname=' + jQuery('#fname').val() + '&lname=' + jQuery('#lname').val(),
success: function( data ) {
}
});
}
HTML
<input class="buttondb4 white2 large" type="text" value=" " id="enterLicence" />
<input type="hidden" name="licenceRegion" id="licenceRegion" value="" />
<input type="hidden" name="fname" id="fname" value="First" />
<input type="hidden" name="lname" id="lname" value="Last" />
和我的PHP:
if ($_POST){
$lnum = noescape($_POST['lnum']);
$fname = noescape($_POST['fname']);
$lname = noescape($_POST['lname']);
$region = noescape($_POST['region']);
$flag = noescape($_POST['flag']);
//mysql query here
}
但是当它发布时,它没有检索任何发布的数据(发布的值是空白的)
为什么不提取数据?我错过了什么?我做错了什么?
不幸的是,我不能发布整个脚本/页面,因为它是一个客户的私人项目,虽然我认为我已经为我想要做的事情提供了足够的信息。
答案 0 :(得分:2)
当json响应格式错误时,jQuery ajax调用会无声地失败。
确保将此格式用于json:
{"firstName": "John", "lastName": "Smith", "age": 25}
不要使用单引号。
PHP json_encode()
正确完成。
要进一步调试错误,请使用complete(XMLHttpRequest, textStatus)
回调。
第二个参数是错误类型。 (见jQuery.ajax)
答案 1 :(得分:1)
在SO
上阅读你需要等待函数的返回:
onSubmit="return sendData()"
否则表格将立即提交,并且不会等到数据发生变化。
在函数内部替换此
document.data.submit();
用这个:
return true;
上面评论中发布的链接
答案 2 :(得分:1)
HTML
<script type="text/javascript">
$(document).ready(function(){
...
if ( flag ) {
$.ajax({
url: 'submit_licence.php',
dataType: 'json',
type: 'POST',
data: 'flag=' + flag + '&' + $('#someId').serialize(),
success: function( data ) {
}
});
}
});
</script>
...
<form id='someId'>
...
<input class="buttondb4 white2 large" type="text" value=" " id="enterLicence" />
<input type="hidden" name="licenceRegion" id="licenceRegion" value="" />
<input type="hidden" name="fname" id="fname" value="First" />
<input type="hidden" name="lname" id="lname" value="Last" />
</form>
检查数据是否已发送,“print_r($ _ POST);”,这应该可行
//print_r($_POST);
if ($_POST){
$lnum = noescape($_POST['lnum']);
$fname = noescape($_POST['fname']);
$lname = noescape($_POST['lname']);
$region = noescape($_POST['region']);
$flag = noescape($_POST['flag']);
//mysql query here
...
echo json_encode($result);
}
答案 3 :(得分:1)
使用Firebug for Firefox检查使用Ajax且没有Ajax的HTTP标头(只需设置<form method="post"...>
并添加<input type="submit">
)。
答案 4 :(得分:0)
相对较新的jQuery Ajax,我不确定,但这可能是一个原因吗?
data(Object,String): 要发送到服务器的数据。它是 转换为查询字符串,如果没有 已经是一个字符串它被附加到了 GET请求的网址。
也许因为这不是GET,数据会“掉下来”?
答案 5 :(得分:0)
您尚未提供有关此问题的足够信息。你如何触发ajax请求?如果它发生在submit() - 处理程序中,则需要使用event.preventDefault()来阻止默认行为,否则请求将被默认浏览器行为中止。你确定你真的进入了声明吗?这可以使用Firebug进行检查,以查看是否有请求,就像许多其他人建议的那样。
所以,试试这些简单的事情:
看到你没有真正提供关于你如何以及在何处调用此代码的足够信息,我只能猜测问题是什么。
希望这有用:)
答案 6 :(得分:0)
Hvae你确认你在AJAX中传递的值有值吗?尝试一个简单的警报和var来查看其中的内容。
如果警报显示值,则将数据类型更改为文本,并查看它是否传递数据。不要将其用于最终解决方案,只需调试