我正在使用JSONP,我的url(action)返回了一个名为processTemplates的函数。 有什么方法可以执行我自己的功能而不是 过程模板。
有点像 _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解析失败了。”
请帮我解决这个问题。
答案 0 :(得分:0)
答案 1 :(得分:0)
您可以使用来自JSONP Ajax调用的数据以比您尝试更简单的方式调用,因为jQuery将为您创建回调函数的所有工作。您可以使用exten => s,n,Set(SONG_TO_PLAY=${SHELL(/usr/local/asterisk/very_complicated_script_to_get_next_song_to_play.sh arg1 arg2 arg3):0:-1})
exten => s,n,Playback(${SONG_TO_PLAY})
exten => s,n,System(/usr/local/asterisk/notify_fb.sh ${SONG_TO_PLAY})
处理程序执行此操作:
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一起使用。由于JSONP请求的工作方式,这不受支持。所有JSONP请求都必须是异步的。
此外,请记住JSONP是一种与普通Ajax请求不同的请求类型,您的服务器必须支持JSONP类型请求。您无法对正常的Ajax URL发出JSONP请求。服务器必须生成JSONP格式的响应。
答案 2 :(得分:0)
jsonpCallback是构建请求时回调函数的参数名称。通常,JSONP请求如下所示:
http://example.com/endpoint的回调强> =&yourFunction中放大器;富=酒吧
根据你的代码,jQuery可能会生成这样的东西:
http://example.com/endpoint的 _processJSONCallBack 强> =&yourFunction中放大器;富=酒吧
您使用的任何API都不知道回调函数的名称,因为它没有在正确的参数中设置。检查文档以查看回调参数名称应该是什么。如果未指定jsonpCallback,jQuery默认为'callback'。