请参阅@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
。
萤火虫 GET url 结果如下:http://localhost/mysite/Cart [object%20FormData]&_=1451738500443
服务器发送的响应为Something Else
。
我做错了什么?
答案 0 :(得分:1)
jQuery.ajax()期望为“data”:PlainObject或String或Array
FormData可用于POST请求。 (这是由浏览器处理的,而不是jQuery)。 FormData无法转换为GET-String,因为它旨在处理文件上传等案例。
您应该将数据更改为:
var data = {'unique_id': unique_id};
或从GET更改为POST
或(评论时)将processData更改为true
答案 1 :(得分:0)
而不是
var data = new FormData ( );
data.append ( 'unique_id', unique_id ); // This I checked, it is correct.
只需使用
var data = { unique_id : unique_id };
哪里
var data = { index_name : index_value };