0
我想获得一个jQuery ajaxPrefilter与下面的JS代码一起工作。这里是我用来调用ajax函数的代码。jQuery ajaxPrefilter和表达式引擎
var $setallow = $(".show");
$setallow.click(function() {
var $allow = $(this).closest("form");
var formData = $allow.serialize();
submitForm(formData);
});
function submitForm(formData) {
$.ajax({
type: "POST",
url: "/schedule_update.php",
data: formData,
dataType: "json",
cache: false,
timeout: 8000,
success: function(data, textStatus, jqXHR) {
},
error: function(data, textStatus, errorThrown) {
}
});
};
这是我想使用的预滤器代码。此代码由Expression Engine提供。
$.ajaxPrefilter(function(options, originalOptions, jqXHR) {
var old_xid = EE.XID;
jqXHR.setRequestHeader("X-EEXID", old_xid);
jqXHR.complete(function(xhr) {
var new_xid = xhr.getResponseHeader('X-EEXID');
if (new_xid) {
EE.XID = new_xid;
$('input[name="XID"]').filter('[value="'+old_xid+'"]').val(new_xid);
}
});
});
这里是HTML代码的形式。
<form>
<input type="hidden" name="XID" value="{XID_HASH}" />
<input type="hidden" name="id" value="1" />
<input type="checkbox" name="allow" value="yes" class="show" />
</form>
我该如何使这个前置滤波器与我的代码一起工作?只要我将前置过滤器添加到我的JS代码的任何部分,表单就不会再提交到我的php页面来更新数据库。谢谢你提供的所有帮助。
我尝试使用您的PHP代码将XID_SECURE_HASH返回到JS的html页面。我还在AJAX调用成功时使用了EE.XID,并使用了表达式引擎提供的ajaxPrefilter。该页面仍然不会提交。我认为AJAX预过滤器存在错误。你有没有使用完全相同的预滤器代码?我试图将prefilter代码放在submitform函数中无济于事。感谢您的帮助 –
我放弃了AJAX预滤器,因为它不适合我。对于表单,您可以在AJAX调用之前在“submitForm”函数内添加到隐藏的输入字段,如“$('input [name =”XID“]').val(EE.XID)”。或者您可以在表单字段本身中调用XID_SECURE_HASH,如““/>”。 – Ufb007