javascript - 跨域 AJAX 请求返回字符串

标签 javascript jquery ajax jsonp

我正在寻找一种从跨域“AJAX”请求返回单个 JSON/JSONP 字符串的方法。我不想请求字符串并让 JQuery 自动将其作为通用对象返回,而是想在转换发生之前获取字符串。这里的目标是自己解析它,以便我可以将它直接转换为某种类型的新对象(例如 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 调用中的数据类型更改为“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 函数一样(您就是) ,传递你想通过服务提供的值(value)。然后,您的 success 函数将使用您的服务提供的数据进行调用。

如果您将返回的数据反序列化为 Javascript 对象,则返回 JSON 数据可能比返回字符串更好,因此您的服务返回的数据可能如下所示:

arbitrary_function_name({
    "name":"Bob Person", 
    "age":27, 
    "etc":"More data"
});

这样你就不必担心解析字符串 - 它已经在一个 Javascript 对象中,可以很容易地用来初始化你的对象。

关于javascript - 跨域 AJAX 请求返回字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6376623/

相关文章:

javascript - AWS Cognito 身份验证返回错误 - Javascript SDK

jquery - HTML根据td标签内容使用javascript更改字体粗细

ruby-on-rails - 使用 datatable/will_paginate 的索引页面显示性能差

javascript - 使用javascript隐藏表格中的元素

javascript - Ruby 代码块与 javascript 匿名函数的区别

c# - 客户端和服务器端的 Asp.net C# 加密/解密

jquery - 我怎么知道有多少元素具有特定的背景颜色?

jquery - 获取带有父显示器的div的宽度: none in Jquery Tab Control

php - Ajax, PHP - 从数据库中获取

javascript - 如何从ajax请求中获取数据响应?