无法通过Jquery Ajax捕获$ _POST / $ _ GET

时间:2016-01-02 12:57:18

标签: javascript php jquery ajax

请参阅@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

我做错了什么?

2 个答案:

答案 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 };