如果这是一个重复的问题,我会很乐意被重定向到答案:)。jQuery.ajax():无法访问两个返回的json对象(jsonp)
一些背景资料:
我有一个小物件,处理JSONP请求。这段代码执行时
直到最近,我用的是纯JavaScript这样处理的请求......
this.fetchJsonp = function(){
//the 'request' variable holds the URL and parameters for the request.
var request = this.request;
//creates a script element
var jsonpCall = document.createElement('script');
//gets jsonp request
jsonpCall.src = request;
//adds script to DOM, which goes on to request the JSONP from the service.
document.getElementsByTagName('head')[0].appendChild(jsonpCall);
};
后,回调函数被调用和JSONP对象传递给它。由于被称为服务设置方式,服务发送我在这个格式2个JSONP对象:
callbackWrapperFunc({"arrayName":[{item1:"hello",item2:"world"}]}, {anotherImportantItem:"!"});
我可以传递这些对象为这样的回调函数...
this.myCallBackFunction(firstObject, secondObject){
//manipulate data here
}
问题:
因为我已经改变了我的方法,现在我使用jQuery来处理JSONP请求,因为它让我更容易地处理错误。
//snippet of my jQuery ajax call:
jQuery.ajax({
url: this.request,
type: 'get',
dataType: 'jsonp',
success: function(firstObject, secondObject) {
//manipulate data here
}
});
我知道,传递到“成功”的参数不会以同样的方式为我的原代码,因为jQuery的Ajax对象返回第二个和第三个参数作为textStatus(详细介绍了呼叫是否是成功的工作或失败)和jqXHR对象。
让我访问数据的第一个参数只让我可以访问第一个JSON对象,而不是第二个参数。我似乎无法找到访问第二个对象的方法(我也尝试通过对象“循环”但无济于事:也许我做错了?)。
这可能是非常简单的了解我!任何帮助将不胜感激!
如何在服务器端脚本中发送两个JSON对象?!!?你为什么不在数组中发送两个对象?像这样:[{..},{..}] – Mohebifar
尽管你正在做的事情是完全可能的,由于某种原因,JSONP已经发展成预期/假设(通过没有技术限制!),只有单个参数将被传递给回调函数。正因为如此,我不会惊讶(没有时间检查源代码),如果jQuery只是普通*不处理这个;你可能不得不考虑@ Mohebifar传递一个包含两个对象的单个数组的方法,或者传递一个父对象,其中的两个对象都是属性。 – Matt
嗨,大家好。这是我害怕自己。我将不得不考虑@ Mohebifar的建议。感谢您的快速回复。 – Mark