jsonp请求中未定义的responseText

时间:2014-04-08 17:35:53

标签: javascript jquery ajax

我正在使用$ .ajax向https上的服务器准备的api发送jsonp请求。

我的脚本如下:

var sUrl = "https://localhost/api/" + document.getElementById('query').value +
           "?apikey=c13eb63d-b9ee-4ceb-89fe-944072deddbb&fmt=json&limit=&query=" + document.getElementById('query').value;

    $.ajax({
        type: 'GET',
        url: sUrl,
        dataType: 'jsonp',
        jsonp: false,
        async:false,
        crossDomain : true,
        complete: function(jqXHR, textStatus){
                alert(jqXHR);
            alert(jqXHR.responseText);
            }
            });

我的请求将被发送,我可以在浏览器中收到结果,这是我的回复正文:

{ “relatedid_restriction”:NULL, “目的”: “减轻”, “ASN”:NULL, “RIR”:NULL, “alternativeid”:空, “CC”:NULL, “detecttime”:“2014-04 -08T17:34:31Z “ ”地址“: ”google.com“, ”alternativeid_restriction“:空, ”ID“: ”2bdd4e07-26ba-4dc2-99a8-bdea54bf3d4f“, ”GUID“: ”每个人“,” 严重“:null,”评估“:”搜索“,”rdata“:null,”description“:”搜索google.com“,”asn_desc“:null,”relatedid“:null,”reporttime“:”2014-04- 08T17:34:31Z“,”confidence“:”50“,”restriction“:”private“,”prefix“:null} {”relatedid_restriction“:null,”purpose“:”mitigation“,”asn“:null, “RIR”:NULL, “alternativeid”:空, “CC”:NULL, “detecttime”: “2014-04-08T17:35:14Z”, “地址”: “google.com”, “alternativeid_restriction”:空, “ID”: “1df23bea-ab15-4410-aab4-d2c538a385fd”, “GUID”: “每个人”, “严重”:空, “评价”: “搜索”, “RDATA”:空, “说明”:“搜索google.com “ ”asn_desc“:空, ”relatedid“:空, ”reporttime“: ”2014-04-08T17:35:14Z“, ”自信“: ”50“, ”限购“: ”私有“,”前缀“:空}

现在第一个提示“alert(jqXHR);”返回[object Object]但返回第二个“alert(jqXHR.responseText);”返回undefined。

如何在javascript中检索响应正文?

由于

2 个答案:

答案 0 :(得分:0)

如果使用jsonp,则需要进行函数调用。像这样:

echo $_GET['callback'] . "(" . json_encode($DATA) . ");";

因为jsonp需要调用一个函数。我认为jQuery将添加一个名为callback的GET变量。

你能做到这一点:

jsonp: "callback",
success : function(data){
    console.log(data);
}

更多信息和示例:http://www.jquery4u.com/json/jsonp-examples/

答案 1 :(得分:0)

来自jquery文档:

  

text和xml类型返回数据而不进行处理。数据只是分别通过jqXHR对象的responseText或responseXML属性传递给成功处理程序。

也就是说,responseText仅在datatype="text"时有效,因此,如果您不需要jsonp,则更改数据类型或在完整回调中使用第一个参数,该参数应该是表示您的json响应的对象