Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在本机Javascript中是否有JSONP.parse()函数?_Javascript_Jsonp - Fatal编程技术网

在本机Javascript中是否有JSONP.parse()函数?

在本机Javascript中是否有JSONP.parse()函数?,javascript,jsonp,Javascript,Jsonp,我得到一个JSONP对象的xhr响应,类似于 JSONP({Objects}) 如果我执行JSON.parse('JSONP({Objects})(位置0处JSON中的意外标记j),这将弹出一个错误,是否有一个JSONP.parse()函数将自动从JSONP响应中剥离*() 我为什么要这么做 因为这个JSONP响应需要POST请求,这使得其他人很难使用它 另外,回调填充JSONP是动态且不可预测的。理论上,您仍然可以通过以下方式将JSONP附加到文档中: var jsonp = {}; func

我得到一个JSONP对象的xhr响应,类似于

JSONP({Objects})

如果我执行
JSON.parse('JSONP({Objects})
位置0处JSON中的意外标记j
),这将弹出一个错误,是否有一个
JSONP.parse()
函数将自动从JSONP响应中剥离
*()

我为什么要这么做

因为这个JSONP响应需要POST请求,这使得其他人很难使用它


另外,回调填充
JSONP
是动态且不可预测的。

理论上,您仍然可以通过以下方式将JSONP附加到文档中:

var jsonp = {};
function getList(callback){
  var xhrlist = new XMLHttpRequest();
  xhrlist.addEventListener('load',function(){
    if (xhrlist.status == 200) {
      callback(null, xhrlist.responseText);
    } else {
      console.log(xhrlist.responseText);
      callback('error');
    }
  });
  xhrlist.open('POST', 'http://example.com/');
  xhrlist.send('request=list');
}
getList((err, data)=>{
  if (err) {
    alert(err);
  } else {
    alert('success!');
    var script = document.createElement('script');
    script.innerHTML = data;
    document.getElementsByTagName('head')[0].appendChild(script);
  }
});
function JSONP(response) {
  jsonp = response;
}
现在这里有一个缺陷,
函数JSONP(response)
必须与JSONP回调同名。因此,只有当回调保持不变并且您已经知道它是什么时,这才有效

当然,如果必须剥离JSONP,可以尝试以下方法:

data = data.substring(data.indexOf('(') + 1);
data = data.substring(0, data.length - 1);

在这种情况下,您不需要知道回调。

您显然不知道JSONP是如何工作的-请参阅,您确定API不支持纯JSON吗?那真是太奇怪了。@Bergi我不认为这是公开的api@AeroWang不管它是什么API,我确信它们不会向公众提供JSONP格式,也不会限制JSON格式。不管是什么情况,只要向提供者询问JSON API就行了!酷,如果回调是动态的,会发生什么?