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