Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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响应中删除Wrap函数_Javascript_Regex_Jsonp - Fatal编程技术网

Javascript 使用正则表达式从JSONP响应中删除Wrap函数

Javascript 使用正则表达式从JSONP响应中删除Wrap函数,javascript,regex,jsonp,Javascript,Regex,Jsonp,我正在对一个API进行AJAX调用,并得到一个JSONP响应,作为一个大字符串,它被包装在用于进行调用的回调函数中。我想使用JSON.parse()方法解析对实际javascript对象的响应,但是wrap函数阻止了parse()方法的工作。JSONP响应如下所示: 1: jsonpFunction( 2: { 3: "response": { 4: "version":"0.1", ... ... 962: } 963: ); 我想删除所有的第1行和第96

我正在对一个API进行AJAX调用,并得到一个JSONP响应,作为一个大字符串,它被包装在用于进行调用的回调函数中。我想使用JSON.parse()方法解析对实际javascript对象的响应,但是wrap函数阻止了parse()方法的工作。JSONP响应如下所示:

1: jsonpFunction(
2: {
3:    "response": {
4:       "version":"0.1",

...     ...

962:    }
963: );
我想删除所有的第1行和第963行,以便分析其余的。我已经设法使用正则表达式实现了这一点,但我不得不使用replace()方法两次:

var fixedResponse = response.replace(/jsonpFunction\(/g,'').replace(/\);/g,'');

我是一名刚开始学习网络开发的学生,所以我对正则表达式不太熟悉。如何组合正则表达式以便只需使用replace()方法一次?

您是如何接收数据的?JSONP的全部要点是包含一个发出请求的
元素,然后(自动)调用前缀中的函数,将数据传递给它。也就是说,如果您通过
标记引用API,请首先定义函数
jsonpFunction
,然后它将被传递数据。如果您通过AJAX调用API,您应该配置请求,使其不会首先返回JSONP。@felixkling您是对的,问题是此时我需要以JSONP形式响应,因为我需要避免违反同源策略。如果我尝试对API发出普通JSON或XML请求,我会得到一个“XMLHttpRequest无法加载”“请求的资源上不存在“Access Control Allow Origin”头。`错误。老实说,我还不明白这个错误背后的概念。我还没有学到任何关于后端代码或使用服务器的知识。我只是想弄清楚正则表达式,这意味着如果您使用的是JSONP,那么您就没有使用Ajax(没关系)。但是,
响应
从何而来?请提供一个完整的例子。请参阅以获取指导。另外,还可以了解一下JSONP是什么以及它是如何工作的。“我只是想弄明白正则表达式。”关键是,如果你“正确”地执行JSONP,就不需要使用正则表达式。你有过这样的工作吗!?您是如何接收数据的?JSONP的全部要点是包含一个发出请求的
元素,然后(自动)调用前缀中的函数,将数据传递给它。也就是说,如果您通过
标记引用API,请首先定义函数
jsonpFunction
,然后它将被传递数据。如果您通过AJAX调用API,您应该配置请求,使其不会首先返回JSONP。@felixkling您是对的,问题是此时我需要以JSONP形式响应,因为我需要避免违反同源策略。如果我尝试对API发出普通JSON或XML请求,我会得到一个“XMLHttpRequest无法加载”“请求的资源上不存在“Access Control Allow Origin”头。`错误。老实说,我还不明白这个错误背后的概念。我还没有学到任何关于后端代码或使用服务器的知识。我只是想弄清楚正则表达式,这意味着如果您使用的是JSONP,那么您就没有使用Ajax(没关系)。但是,
响应
从何而来?请提供一个完整的例子。请参阅以获取指导。另外,还可以了解一下JSONP是什么以及它是如何工作的。“我只是想弄明白正则表达式。”关键是,如果你“正确”地执行JSONP,就不需要使用正则表达式。你有过这样的工作吗!?