执行您自己的JSONP函数
Execute your own JSONP function
我正在使用JSONP,我的url(action)正在返回我名为processTemplates的函数。我能不能执行我自己的函数processtemplate .
之类的_processJSONCallBack
function _processOverideCallBack(actionName) {
$.ajax({
type: 'GET',
url: actionName,
async: false,
contentType: "application/javascript",
jsonpCallback: '_processJSONCallBack',
dataType: "jsonp",
error: function(jqXHR, exception) {
if (jqXHR.status === 0) {
alert('Not connect.'n Verify Network.');
} else if (jqXHR.status == 404) {
alert('Requested page not found. [404]');
} else if (jqXHR.status == 500) {
alert('Internal Server Error [500].');
} else if (exception === 'parsererror') {
alert('Requested JSON parse failed.');
} else if (exception === 'timeout') {
alert('Time out error.');
} else if (exception === 'abort') {
alert('Ajax request aborted.');
} else {
alert('Uncaught Error.'n' + jqXHR.responseText);
}
}
});
};
但是当我试图做它抛出一个异常"请求的JSON解析失败。"
请帮帮我。
来自jQuery文档:
不支持跨域请求和dataType: "jsonp"请求同步操作
你可能会得到一个错误,因为你有async: false
。
您可以以一种比您尝试做的简单得多的方式从JSONP Ajax调用中获得数据,因为jQuery将为您完成创建回调函数的所有工作。您可以通过使用success
处理程序来做到这一点:
function _processOverideCallBack(actionName) {
$.ajax({
type: 'GET',
url: actionName,
dataType: "jsonp",
success: function(data) {
// data will be your already parsed JSONP data here
},
error: function(jqXHR, exception) {
if (jqXHR.status === 0) {
alert('Not connect.'n Verify Network.');
} else if (jqXHR.status == 404) {
alert('Requested page not found. [404]');
} else if (jqXHR.status == 500) {
alert('Internal Server Error [500].');
} else if (exception === 'parsererror') {
alert('Requested JSON parse failed.');
} else if (exception === 'timeout') {
alert('Time out error.');
} else if (exception === 'abort') {
alert('Ajax request aborted.');
} else {
alert('Uncaught Error.'n' + jqXHR.responseText);
}
}
});
};
同样,你不能在JSONP中使用async: false
。由于JSONP请求的工作方式,这是不支持的。所有JSONP请求必须是异步的。
另外,请记住JSONP是一种不同于普通Ajax请求的请求类型,您的服务器必须支持JSONP类型的请求。您不能对普通Ajax URL发出JSONP请求。服务器必须生成JSONP格式的响应。
jsonpCallback是构建请求时回调函数的参数名。典型的JSONP请求是这样的:
http://example.com/endpoint? 调 = yourfunction& foo = bar
根据您的代码,jQuery可能生成如下内容:http://example.com/endpoint? _processJSONCallBack = yourfunction& foo = bar
你使用的任何API都不知道回调函数的名称,因为它没有被设置在正确的参数中。查看文档以查看回调参数名称。如果没有指定jsonpCallback, jQuery默认为'callback'。
- getDataAsJSON()在PHP中是一个未定义的函数,但许多解释如何使用JSONP的网站都说要使用它
- AngularJS http.jsonp请求.then和.success函数不起作用
- 如何使用jsonp/jquery触发函数
- 使用 jsonp 调用函数
- Jquery jsonp 请求回调函数未触发
- JSONP 和回调函数名称
- 如果对 JSONP 请求的服务器响应未正确包装在函数中,是否有任何方法可以覆盖“无效标签”错误
- 没有用jQuery调用jsonp回调函数
- 随机循环函数-jsonp
- JSONP函数调用问题
- 为什么Flickr API不允许我为JSONP请求命名自己的回调函数?我看对了吗
- 在带有已定义回调函数的JSONP中使用$.when
- 如何在JSONP调用中用回调函数名包装响应
- JSONP调用产生parsererror,回调函数未被调用
- 无法识别Jsonp函数回调
- 在JSONP中不调用回调函数
- Ext.data.JsonP.request总是指向失败的函数
- 使用javascript jsonp回调函数
- JQuery JSONP随机生成回调函数
- JSONP结果并在该数据上运行多个函数