jQuery AJAX JSON数据类型转换

jQuery AJAX JSON数据类型转换,ajax,jquery,types,jsonp,Ajax,Jquery,Types,Jsonp,希望这个标题不太神秘。发生的事情是,我有一个jqueryajax脚本,我正试图使用它访问远程服务器上的API,它返回一个JSON响应。但是,API以MIME类型“text/html”(在响应头中)而不是“application/JSON”返回JSON。显然,我只需要将返回的内容类型从text更改为JSON,以使AJAX调用正确解释数据 不幸的是,情况并非如此。我尝试过很多不同的方法,但都失败了。我最接近于让这个API调用工作的是调试器告诉我“资源被解释为脚本,但使用MIME类型text/html

希望这个标题不太神秘。发生的事情是,我有一个jqueryajax脚本,我正试图使用它访问远程服务器上的API,它返回一个JSON响应。但是,API以MIME类型“text/html”(在响应头中)而不是“application/JSON”返回JSON。显然,我只需要将返回的内容类型从text更改为JSON,以使AJAX调用正确解释数据

不幸的是,情况并非如此。我尝试过很多不同的方法,但都失败了。我最接近于让这个API调用工作的是调试器告诉我“资源被解释为脚本,但使用MIME类型text/html传输”。AJAX调用错误与我的调试消息一起抛出,该消息以JSON格式转储jqXHR对象,它告诉我:
{“readyState”:4,“status”:200,“statusText”:“parserror”}

下面是我的代码示例(虽然我尝试以多种方式更改代码,但这个版本似乎最接近正确):

如果有人能想出我需要做什么不同的事情来让这项工作成功,我将非常感激

还值得注意的是,如果您将API URL复制/粘贴到浏览器地址栏并点击go,它会给出正确的JSON响应和正确的响应头(“应用程序/JSON”)


我会将dataFilter拦截器中的内容类型更改为json。请记住,这会影响所有ajax调用,因此请使用数据中的信息来决定要转换哪些调用。

尝试将内容类型更改为此类型

                contentType: "application/json; charset=utf-8",

验证服务器是否正在发送jsonp响应。这意味着json应该包含一个回调字符串

回调名称在参数中传递,如果您没有显式设置它,则看起来像:jQuery15102810791094068532_1300988427891(根据)

在服务器上,您需要格式化响应:

jQuery15102810791094068532_1300988427891({...json response ...});
使用GET参数“callback”中定义的回调


您可以尝试将类型设置为“json”,看看它是否有效。我在jquery的jsonp中遇到了许多解析器错误——您可以尝试,直到它变得更平滑。

因此,除非看板板更新其API,否则无法使用JS直接访问它。您必须使用PHP(或其他一些)来处理请求

它也能正常工作,只需要多走一步就行了


仅适用于正在寻找解决方案的任何人。

您是否尝试过简单地设置
数据类型:“html”
,然后成功地解析它?当然。如果我这样做,我会得到一个原点错误。这是一个跨域请求,不要忘记,因此
dataType
几乎必须是
jsonp
json
,在URL上有一个
回调=?
,这只会使jQuery自动将其转换为
jsonp
。我还尝试添加了
callback=?
,而dataType=
html
,但仍然没有成功。您可以发布服务器正在发送的响应吗?我尝试在AJAX调用中添加
dataFilter:function(data,type){return JSON.stringify(data);},
,但仍然得到相同的MIME类型错误。这没有什么区别。我甚至不知道你为什么认为这会有帮助。谢谢你的断然回应。回答之前请仔细阅读问题。@Theralklanni-这不是一个固定的回答-您的数据类型设置为“jsonp”而不是“json”。如果您只返回json,那么您的服务器不会发送jsonp。。。这将导致您收到的错误。您应该返回的文本应该如下所示:“mycallbackfunction({“parameter1”:0,“parameter2”:“1”})”。。。如果它返回类似“{”parameter1“:0,“parameter2“:“1”}”的文本,则服务器需要将mycallbackfunction添加到响应中。您可以修改服务器端的响应吗?如果无法修改服务器端的响应,则需要另一种方法绕过同源策略。。。你可以在网站的本地服务器上编写一个小的php脚本,获取json并将其传递回你的网页。我正在考虑这样做。我试试看。谢谢。这个问题与
JSON
库有关,而不是kanbanpad.False。问题是看板板使用的是JSON,它不是跨域的。这就是为什么需要通过PHP代理请求。他们应该使用JSONP或其他一些CORS风格的API来促进跨域XHR。
                contentType: "application/json; charset=utf-8",
jQuery15102810791094068532_1300988427891({...json response ...});