我在页面上有很多功能,下面的代码完全相同,除了正在发送的数据,以及显示结果的成功div。例如:
一个ajax帖子:
$.ajax({
type: 'POST',
url: 'unique_file.php',
data: {qty: 2, item_id: 13},
cache: false,
success: function(data) {
$('#return_div').html(data);
}
});
另一个ajax帖子:
$.ajax({
type: 'POST',
url: 'another_unique_file.php',
data: {no_shipping: 4},
cache: false,
success: function(data) {
$('#a_different_div').html(data);
}
});
所以我认为把它变成像这样的函数是理想的
function do_ajax(post_file,results_div,post_data) {
$.ajax({
type: 'POST',
url: post_file,
data: {post_data}, // this doesn't appear to work
cache: false,
success: function(data) {
$(results_div).html(data);
}
});
}
然后我可以像这样实现#1 ajax:
do_ajax('unique_file.php','#return_div','qty: 2, item_id: 13');
这对我来说似乎合乎逻辑,但我的逻辑限制是如何将数据导入我的函数。也许post_data不仅仅是一个类似的字符串,而是更像是:
do_ajax('purchase_create.php','#create_purchase_window','item_id:'+$item_id+', qty: '+$qty+'');
这看起来很混乱......但大多数情况下,它只是不起作用。是否有更简洁的方法可能将所有数据放入数组并将其提供给函数?
答案 0 :(得分:2)
您可以使用ajaxSetup设置默认值。
$.ajaxSetup({
cache: false,
type: 'POST'
});
然后
$.ajax({
url: post_file,
data: {post_data: post_data}, // this doesn't appear to work
success: function(data) {
$(results_div).html(data);
}
});
{post_data}
语法不正确。所以我将其更改为{post_data: post_data}
答案 1 :(得分:1)
你走在正确的轨道上:
function do_ajax(post_file,results_div,post_data) {
$.ajax({
type: 'POST',
url: post_file,
data: post_data,
cache: false,
success: function(data) {
$(results_div).html(data);
}
});
}
do_ajax('purchase_create.php, '#create_purchase_window', {
item_id: 3,
qty: 2
});
您正在将对象传递给POST
,因此只需将该对象传递到do_ajax
函数中并将其传递。