Php $.post在声明数据类型时不起作用
我注意到下面的代码不起作用。当我删除Php $.post在声明数据类型时不起作用,php,jquery,ajax,Php,Jquery,Ajax,我注意到下面的代码不起作用。当我删除,“json”)在它的结尾,它的工作,但我只是得到失败。我在网站上遵循jquery规范。知道为什么$.post方法不能工作/输入吗 我知道它不会输入$.post的原因是因为alert(form.serialize())未被调用 在我的PHP中,我在发布时返回以下内容: $arr = array('status' => 'SUCCESS'); echo json_encode($arr); exit();
,“json”)代码>在它的结尾,它的工作,但我只是得到失败。我在网站上遵循jquery规范。知道为什么$.post
方法不能工作/输入吗
我知道它不会输入$.post的原因是因为alert(form.serialize())代码>未被调用
在我的PHP中,我在发布时返回以下内容:
$arr = array('status' => 'SUCCESS');
echo json_encode($arr);
exit();
下面是我的ajax:
var form = $('#lines');
$.post('', form.serialize(), function(json) {
alert(form.serialize());
if(json.status === 'SUCCESS') {
alert(json);
console.log('success');
} else {
alert(json);
console.log('failure');
}
}, "json");
如果我在最后删除json部分,它只返回页面的整个HTML。您的响应可能不是json。如果您删除,“json”
,它可以工作,但会返回字符串数据,因此代码无法工作(字符串上的json.status将无法工作)。如果您将,“json”
,那么如果返回的是不正确的json,那么它可能不会工作
您可以做的是:最后留下“json”,因为这是您想要的,添加console.data(json)
和console.data(类型为json)代码>仅在成功功能开始时
忘了警报吧,首先它会停止您的脚本,它不像控制台那么精确。尽可能使用控制台
我可以建议你这样写,让它更具可读性:
console.log('form.serialize()',form.serialize()) ;
var post = $.ajax({
method : 'POST',
url : '',
data : form.serialize(),
dataType : "json"
});
post.done(function(json){
console.log('success',json) ;
console.log('typeof json',typeof json) ;
if(json.status === 'SUCCESS') {
console.log('success');
} else {
console.log('failure');
}
}) ;
post.fail(function(data){
console.log('fail',data) ;
alert('post fail') ;
}) ;
这是我完整的php文件index.php
。结构应该和你的一样。只需注意上面的部分,我确保在有post数据时,我只回显json并返回,因此不会发送任何其他内容(如退出)
jQuery('input[type=“button”]”)。在('click',function()上{
var form=jQuery(this).closest('form');
log('form.serialize()',form.serialize());
var post=$.ajax({
方法:“POST”,
url:“”,
数据:form.serialize(),
数据类型:“json”
});
post.done(函数(json){
log('success',json);
log('typeof json',typeof json);
如果(json.status==='SUCCESS'){
console.log('success');
}否则{
console.log('failure');
}
}) ;
post.fail(功能(数据){
console.log(this);
console.log('fail',数据);
警报(“失败后”);
}) ;
}) ;
您需要在php代码中指定标题,并告诉jQuery一个“json”响应正在进行中。。下面是正确的php代码
header('Content-Type: application/json');
$arr = array('status' => 'SUCCESS');
echo json_encode($arr);
exit();
注意发送json头的那一行,现在试试看,它会工作的FYI:如果我删除json部分,它只会返回object对象。返回object对象的是什么?警报(json)?这就是为什么您需要使用控制台而不是警报,它更详细,您将看到完整的对象。你试过下面的代码吗?(我编辑过它,它有一些错误)是的,我现在只是失败了,我正在尝试检查我的php端。在控制台中“失败”后,你应该有一些消息吗?你确定它会调用你的php文件吗?url:“”表示您正在同一文件夹中调用index.php,您确定您的php就在那里吗?我正在从同一个文件调用ajax是的。
header('Content-Type: application/json');
$arr = array('status' => 'SUCCESS');
echo json_encode($arr);
exit();