如何使用Ajax Post的响应

时间:2014-01-20 11:53:59

标签: javascript jquery ajax post

我发一个ajax POST请求将JSON数据发布到服务器,我得到一个简单的文本响应。我可以看到一切正常,因为它显示在浏览器的调试器中。但是,我不能使用它。

    callajax1(Callback);


    function callajax1(callbackfn) {   
    $.ajax({
        type: "POST",
        url: myUrl,
        data: JSON.stringify({ Data: data }),
        contentType: "text/plain; charset=utf-8",
        dataType: "json",
        success: function (data2) {
            callbackfn(data2);
        },
        failure: function (errMsg) {

        }
    });
    return false;
}


function Callback(data) {
    alert(data);
}

没有显示任何警告。

3 个答案:

答案 0 :(得分:5)

你说你得到了一个“简单的文本回复”,但是你的JavaScript(dataType: "json")说要忽略响应的内容类型并将其解析为JSON。

也许(因为您发送JSON并声称它是纯文本),您会混淆dataType(覆盖服务器返回的内容类型)和contentType(描述您要发送的数据)。< / p>

如果响应是“简单文本”而不​​是JSON,那么您无法将其解析为JSON。要么返回JSON,要么使用dataType: 'text'

答案 1 :(得分:1)

  • 如果ajax的结果是文本,则数据类型应为text
  • 如果ajax的结果是html,则数据类型应为html
  • 如果ajax的结果是json,则数据类型应为json
  • 如果ajax的结果是xml,则数据类型应为xml

dataType告诉jQuery解析给定dataType的结果,默认为'text',尽管jQuery足够智能以检测需要哪个转换。

答案 2 :(得分:0)

你可以在这里看到答案:

http://jsfiddle.net/justtal/x9re9/

function callajax1(callbackfn) {

    $.ajax({
        type: "GET",
        url: 'https://gdata.youtube.com/feeds/api/videos',
        /*data: JSON.stringify({ Data: data }),*/
        /*contentType: "text/plain; charset=utf-8",*/
        /*dataType: "json",*/
        success: function (data2) {
            callbackfn(data2);
        },
        failure: function (errMsg) {
            callbackfn(errMsg);
        }
    });
    return false;
}


var Callback = function (data) {
    alert(data);
}

callajax1(Callback);