gpt4 book ai didi

javascript - 如何使用 jQuery ajax 函数作为数据

转载 作者:可可西里 更新时间:2023-11-01 01:43:01 25 4
gpt4 key购买 nike

为了减少重复的脚本,我创建了以下插件,只要 data 保持原样,它就可以工作。

$.fn.myValid = function(rules, options) {
this.validate({
rules: rules.rules,
messages: rules.messages,
submitHandler: function(form) {
var o = Object.assign({},{
type:'POST',
url:null,
data: $(form).serializeArray(),
dataType: 'json',
success: function (rsp){
//Instead of reloading page, do dynamicly
$.unblockUI();
alert('record submitted')
location.reload();
},
error: function (xhr) {
$.unblockUI();
alert(xhr.responseJSON.message);
}
}, options);
//if (typeof o.data === "function") o.data=o.data(form);
$.blockUI();
$.ajax(o);
}
});
};

如果 data 需要更改,我不能简单地返回类似 $(form).serializeArray().concat($('#common-inputs').serializeArray(form )) 因为 form 还没有定义,所以我认为返回一个函数会起作用。但是,当启动 ajax 时,data 是一个函数,而不是字符串、数组或普通对象,因此数据不会发送到服务器。

$('#help-form').myValid(validObj.common, {url:'ajax.php','data': function(form){
console.log('this is never executed);
return $(form).serializeArray().concat($('#common-inputs').serializeArray(form))
}});

作为解决方法,我包含了 o.data=o.data(form);(在上面的脚本中被注释掉)来执行返回结果的函数,并且它按预期工作。不过,我希望它更像是一种 hack,并且有一种正确的方法可以做到这一点。

使用 jQuery ajax 函数作为数据的正确方法是什么?

urlsuccess 等其他属性的解决方案是否会有所不同?

最佳答案

您可以使用beforeSend 回调来设置data 值:

beforeSend: function( xhr, settings ) {
this.data = $(form).serialize(); // or settings.data = $(form).serialize();
},

修改 url 和成功回调的方法相同:

this.url = 'new-url';
this.success = newSuccessCallback;

Similar question

请注意,这不适用于 GET 请求,但 POST 应该可以正常工作。

关于javascript - 如何使用 jQuery ajax 函数作为数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49480380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com