我想从不同的.js文件进行Ajax调用。我做了这样的事情:
function ajax(url,success,error)
{
success+="(data)";
error+="(xhr, ajaxOptions, thrownError)";
console.log("Starting AJAX");
console.log("Success function: " + success);
console.log("Success function: " + error);
$.ajax({
crossDomain: true,
type: 'GET',
url: url,
callback: 'jsonpCallback',
jsonpCallback: 'jsonpCallback',
jsonp: '_jsonp',
scriptCharset: "utf-8",
contentType: 'application/json',
dataType: 'jsonp json',
timeout : 5000,
success: success_contact(data),
error: error_contact(),
});
}
还有函数success_contact和错误联系人。我是这样开始的:
$(document).bind('pageinit', function() {
ajax('http://topfirma-dev/topfirma-www/services/rest/contact/list','success_contact','error_contact');
});
调用Ajax调用,但是出现错误:
Uncaught ReferenceError: data is not defined
这是我的问题。如何从Ajax调用中捕获数据?
答案 0 :(得分:3)
如果在其他地方定义success_contact
和error_contact
,则无需将其作为函数调用,只需知道它们是哪些函数即可。
var success_contact = function (data) {
/* do something */
}
var error_contact = function (jqXHR, textStatus, errorThrown) {
/* do something */
}
// ...
$.ajax({
crossDomain: true,
type: 'GET',
url: url,
callback: 'jsonpCallback',
jsonpCallback: 'jsonpCallback',
jsonp: '_jsonp',
scriptCharset: "utf-8",
contentType: 'application/json',
dataType: 'jsonp json',
timeout : 5000,
success: success_contact,
error: error_contact,
});
答案 1 :(得分:1)
当您进行ajax调用(或传递内联函数)时,您应该只将函数的名称传递给success(和error)属性。
e.g。
$.ajax({
crossDomain: true,
type: 'GET',
url: url,
callback: 'jsonpCallback',
jsonpCallback: 'jsonpCallback',
jsonp: '_jsonp',
scriptCharset: "utf-8",
contentType: 'application/json',
dataType: 'jsonp json',
timeout : 5000,
success: success_contact,
error: error_contact,
});
然后你应该声明success_contact(和error_contact)函数:
var success_contact = function(data) {
console.log(data);
};
或:
$.ajax({
crossDomain: true,
type: 'GET',
url: url,
callback: 'jsonpCallback',
jsonpCallback: 'jsonpCallback',
jsonp: '_jsonp',
scriptCharset: "utf-8",
contentType: 'application/json',
dataType: 'jsonp json',
timeout : 5000,
success: function(data, textStatus, jqXHR) {
console.log(data);
// Do stuff
},
error: function(jqXHR, textStatus, errorThrown) {
// Do stuff
}
});