我正在使用$ .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中检索响应正文?
由于
答案 0 :(得分:0)
如果使用jsonp,则需要进行函数调用。像这样:
echo $_GET['callback'] . "(" . json_encode($DATA) . ");";
因为jsonp需要调用一个函数。我认为jQuery将添加一个名为callback
的GET变量。
你能做到这一点:
jsonp: "callback",
success : function(data){
console.log(data);
}
答案 1 :(得分:0)
来自jquery文档:
text和xml类型返回数据而不进行处理。数据只是分别通过jqXHR对象的responseText或responseXML属性传递给成功处理程序。
也就是说,responseText仅在datatype="text"
时有效,因此,如果您不需要jsonp,则更改数据类型或在完整回调中使用第一个参数,该参数应该是表示您的json响应的对象