gpt4 book ai didi

json - 我收到意外 token : for a valid JSON

转载 作者:行者123 更新时间:2023-12-01 05:12:54 26 4
gpt4 key购买 nike

我正在使用 ArcGIS、Esri 请求并尝试从网络服务器获取数据,但每次我都收到相同的“意外标记:”错误,即使我的响应是正确的。

提前致谢。

这是我的代码:

require(["dojo/dom", "dojo/on", "dojo/dom-class", "dojo/_base/json",  "esri/urlUtils", "esri/config", "esri/request", "dojo/domReady!"], function(dom, on, domClass, dojoJson, urlUtils, esriConfig, esriRequest) {

// fallback to proxy for non-CORS capable browsers
// esri.config.defaults.io.proxyUrl = "/arcgisserver/apis/javascript/proxy/proxy.ashx";
esriConfig.defaults.io.proxyUrl = "/proxy/proxy.ashx";

dom.byId("url").value = "http://api.citybik.es/v2/networks/dublinbikes";
dom.byId("content").value = "";

//handle the Go button's click event
on(dom.byId("submitRequest"), "click", getContent);

function getContent(){

var contentDiv = dom.byId("content");
contentDiv.value = "";
domClass.remove(contentDiv, "failure");
dom.byId("status").innerHTML = "Downloading...";

// //get the url
// var url = urlUtils.urlToObject(dom.byId("url").value);

// console.log("EL URL path",url.path)
// console.log("EL URL query",url.query)
// var requestHandle = esriRequest({
// "url": url.path,
// "content": url.query
// });
// requestHandle.then(requestSucceeded, requestFailed);

function requestSucceeded(data) {
console.log(data);
}

function requestFailed(error) {
console.log("Error: ", error.message);
}

var request = esriRequest({
url: "http://api.citybik.es/v2/networks/dublinbikes",
content: {
format: "json"
},
handleAs: "json",
callbackParamName: "retrive"
});
request.then(requestSucceeded, requestFailed);
}
}
);

我得到:

Uncaught SyntaxError: Unexpected token : dublinbikes:2

最佳答案

根本问题是您得到的 esri.request 与您请求的内容以及服务器返回的内容有些混淆。因为您正在从运行代码的地方(无论您的主机是什么)向不同的域 (api.citybik.es) 发出请求,所以您需要使用以下任一方法:

  • CORS
  • JSONP
  • 代理

绕过浏览器的安全限制。 SO 上有很多关于这些的细节,我不会进一步运球。

您的代码配置了两种方法 - callbackParamName 告诉 esri.request 使用 JSONP,并且您还设置了代理以防万一。 callbackParamName 告诉它只使用 JSONP,因此代理被忽略。

正如我在上面的评论中指出的那样,现在真正的问题是 CityBikes API 的 v2实际上似乎不支持 JSONP,因此您的回调参数将被忽略,服务器会直接返回 JSON。 esri.request 需要 JSONP,瞧 - 意外标记 :。请求

http://api.citybik.es/v2/networks/dublinbikes?callback=stackoverflow

返回:

{
network: {
company: "JCDecaux",
href: "/v2/networks/dublinbikes",
....

看到了吗?没有提及我们的 stackoverflow 变量。如果你看v1 of the API相反,它确实支持 JSONP。请求

http://api.citybik.es/dublinbikes.json?callback=stackoverflow

返回:

stackoverflow(
[
{
bikes: 1,
name: "Fenian Street",
idx: 0,
....

...还有我们的 stackoverflow 变量。或者您可以从 esriRequest 中删除 callbackParamName,然后查看您的代理是否会处理来自 v2 地址的 JSON。

关于json - 我收到意外 token : for a valid JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23784920/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com