我需要进行许多JQUERY AJAX调用,但我不想经常重复AJAX调用代码。因此,我尝试按如下方式设置AJAX函数:
function ajaxCall(ajaxData) {
$.post('scripts/ajax/connect.ajax.php', {
ajaxData
}, function(ajaxReturn) {
if (ajaxReturn == 'deadSession') {
location.reload();
} else {
return ajaxReturn;
}
});
}
但是由于AJAX调用中的{ajaxData}变量,上面的代码不起作用。以下代码确实有效:
function ajaxCall(ajaxData) {
$.post('scripts/ajax/connect.ajax.php', {
'googleMetaSave': '1'
}, function(ajaxReturn) {
if (ajaxReturn == 'deadSession') {
location.reload();
} else {
return ajaxReturn;
}
});
}
有关如何在AJAX调用中使用变量的建议,该变量是根据需要设置的,然后传递给此函数。
答案 0 :(得分:0)
删除ajaxData周围的{}:
function ajaxCall(ajaxData) {
$.post('scripts/ajax/connect.ajax.php', ajaxData, function(ajaxReturn) {if(ajaxReturn == 'deadSession') {location.reload();}else{return ajaxReturn;}});
}
答案 1 :(得分:0)
jQuery POST方法第二个参数应该是表示一系列键/值对的字符串,由&
分隔,或者它必须是包含一系列键值对的映射。
由于JavaScript的松散类型,这不会对您的功能产生巨大影响。
因为变量ajaxData表示传递给服务器的对象,所以你不需要额外的{}
,因为这是多余的,如果你传递一个对象,如果你是在语法上不正确传递一个字符串。
首先,让我们在回调函数中解决您的逻辑问题。由于AJAX是异步的,因此在回调函数触发之前,您的函数将完成它的执行。相反,您的return ajaxReturn
语句会向回调函数本身返回一个值,这意味着数据无处可去。
为了将数据提供到可以处理的位置,您的回调必须将该数据作为切换传递到另一个函数。我修改了你的代码,删除了围绕ajaxReturn参数的不必要的,不正确的{ }
,以及消除了return语句。
function ajaxCall(ajaxData) {
$.post('scripts/ajax/connect.ajax.php',
ajaxData /* you don't need {} here */
, function(ajaxReturn) {
if (ajaxReturn == 'deadSession') {
location.reload();
} else {
// return ajaxReturn;
// hand the data off to a processing function
processData(ajaxReturn);
}
});
}
function processData(data) {
// do stuff with the data here
}
要调用您的函数并进行成功的调用,有必要查看如何创建表示参数的字符串/对象的示例:
// put the data in an object. {} are needed here.
var myData = { 'googleMetaSave' : '1' };
// make a call to fire the ajax post request
ajaxCall( myData );
// execution stops here, as your callback will handoff the response
// to your processData function.
或者,您可以代表POST对象而不是JavaScript对象:
// represent data as a query string instead of object
var myData = 'googleMetaSave=1';
// send the data to the post function.
ajaxCall( myData );