请参阅@jpossi 答案。
我还没有接受答案,以便有人可以阐明可能存在的问题,尽管这有点牵强,因为原始的 POST
代码不存在。
好吧,这行得通,我只需注释掉processData: false
。但由于实际函数使用 POST
方法,我尝试回到原始代码: var data = new FormData ( );
保留 processData: false
并更改为 method : 'GET'
猜猜看,它起作用了...我简单地回到了原始的 POST
代码,取消注释几行并注释出几行。发生什么事了?
这是代码,它非常简单,但不知何故我无法捕获 Ajax 函数发送的 $_POST 数据。事实上,我无法发送正确的帖子数据。
这里我尝试使用 GET
选项,这是结果。
/**Javascript**/
var data = new FormData ( );
data.append ( 'unique_id', unique_id ); // This I checked, it is correct.
$.ajax ( {
method : 'GET', url : scriptUrl, data : data, cache : false, processData: false, contentType: false, dataType : 'json',
success : function ( data, textStatus, jqXHR )
{
if ( typeof data.error === 'undefined' ) { alert ( data ); }
else { alert ( 'cccsdsd' ); }
},
error : function ( jqXHR, textStatus, errorThrown )
{
alert ( textStatus );// This fires with Parseerror.
}
} );
/**PHP**/
if ( $this->input->get ( 'unique_id' ) ) // I am working with codeigniter.
{
$data ['message'] = 'My Message';
echo json_encode ( $data );
}
else
{
echo 'Something Else';
}
Ajax 永远不会成功,它总是抛出 parseerror
。
Firebug GET url 结果如下:http://localhost/mysite/Cart [object%20FormData]&_=1451738500443
服务器发送的响应是Something Else
。
我做错了什么?
最佳答案
jQuery.ajax() 预期为“数据”:PlainObject 或 String 或 Array
FormData 可用于 POST 请求。 (这是由浏览器处理的,而不是 jQuery)。 FormData 无法转换为 GET-String,因为它旨在处理文件上传等情况。
您应该将数据更改为:
var data = {'unique_id': unique_id};
或从 GET 更改为 POST
或者(截至评论)将 processData 更改为 true
关于javascript - 无法捕获通过 Jquery Ajax 发送的 $_POST/$_GET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34566139/