从跨域AJAX请求返回字符串
我正在寻找一种从跨域“AJAX”请求返回单个JSON / JSONP字符串的方法。 而不是请求字符串并让JQuery自动将其作为通用对象返回,我希望在转换发生之前获取字符串BEFORE。 这里的目标是自己解析它,以便我可以直接将其转换为某种类型的新对象(例如Person对象)。
所以,为了明确这一点,我不希望在幕后进行任何字符串到通用对象转换,这必须使用不同的域。
这是我想做的一个非工作的例子:
$.ajax({ type: 'GET', url: 'http://www.someOtherDomain.com/GetPerson', dataType: 'text', success: parseToPerson }); function parseToPerson( textToParse ) { // I think I can do this part, I just want to get it working up to this point }
如果JQuery没有参与解决方案,我会非常高兴,只要它有效。 不过我更喜欢使用JQuery。 从我所读到的,用于获取JSONP数据(动态创建脚本元素)的javascript技术可能会起作用,但我似乎无法让它为我工作。 我控制从我请求数据的域,如果我将AJAX调用中的dataType更改为’JSONP’,我可以获取数据,所以我知道这是有效的。
如果从其他域检索数据,则需要使用JSONP(还有其他选项,但如果您控制服务,JSONP是最简单的)。 jQuery调用将如下所示:
$.ajax({ // type: 'GET', --> this is the default, you don't need this line url: 'http://www.someOtherDomain.com/GetPerson', dataType: 'jsonp', success: parseToPerson });
发送给您服务的实际请求将是http://www.someOtherDomain.com/GetPerson?callback=arbitrary_function_name
。 在服务方面,您需要返回如下数据:
arbitrary_function_name("the string (or JSON data) that I want to return");
因此,您需要检查查询字符串参数,获取callback
参数的值,并将其回显,就好像您正在调用具有该名称的Javascript函数(您是),传递您想要提供的值服务。 然后,您的success
函数将使用您提供的服务数据进行调用。
如果要将返回的数据反序列化为Javascript对象,则最好返回JSON数据而不是字符串,因此服务返回的数据可能如下所示:
arbitrary_function_name({ "name":"Bob Person", "age":27, "etc":"More data" });
这样你就不必担心解析字符串了 – 它已经存在于一个易于用来初始化你的对象的Javascript对象中。
不知道这将如何与jsonp结合使用,但也许转换器是你正在寻找的?
$.ajax(url, { dataType: "person", converters: { "text person": function(textValue) { return parseToPerson(textValue); } } });
- Primefaces Dialog Framework – 来自menuitem的dialogReturn事件
- 在尝试使用jQuery的submitHandler时不提交表单
- 如何从2.0 asmx Web服务返回JSON
- 从JSON响应中删除第一行
- JQuery AJAX语法
- 尝试执行jQuery AJAX调用时JavaScript错误意外标识符
- 如何通过Ajax POST传递具有相同名称的多个输入数组元素值,例如ex:sikll
- ASP.NET AJAX PageMethods调用.NET 4.5 IIS 7.5的整个页面
- 使用jquery自动完成我试图获取文本框中的值作为表数据不是来自json使用文本字段中的ajax