因此,我使用jQuery表單擴展從表單發佈數據。當用戶在HTML頁面上按下["Save"]
時,將執行此代碼。AJAX調用PHP接收「之前」發佈的數據
$('#myform').ajaxForm({
async: false,
cache: false,
target: $(this).find('.save-response'),
beforeSubmit: function(arr,$form){
json_ = JSON.stringify (vars.table_settings[aux.getTableId()].by_ix); //, null, 4);
$form.find('.user-settings').val(json_);
$form.find('.save-response').stop(true,true).hide().show();
alert (json_);
},
success: function(){
$(this).fadeOut(15000);
},
正如你看到的,我用的是alert()
功能檢查什麼實際上是被在AJAX調用傳遞到目標PHP文件。我看到的是以下內容:
[
...
{"id":"colpartdesc","vis":"vis","width":500,"ix":3,"desc":"Part Desc."},
...
]
在PHP文件,我看了$_POST
值,並反饋給調用頁面(到.save-response
元素在這個例子中)作爲響應。我得到的答覆是這樣的:
[
...
{"id":"colpartdesc","vis":"vis","width":270,"ix":3,"desc":"Part Desc."},
...
]
正如你看到的,"width"
值是不同的。實際上,值270
是我上次按下["Save"]
按鈕時發送的值。如果我再次按["Save"]
,服務器將收到此次調用中發送的500
值。但是,那個時候500
的價值可能是錯誤的。
如果我在更改輸入前每次按兩次["Save"]
按鈕,則該功能按預期工作。如您所見,我已禁用Ajax調用中的cache
,所以我不認爲這是問題所在。
有沒有人有一個想法,爲什麼我遇到這種行爲?
另外:原始的HTML頁面是使用Smarty模板引擎生成的。但是,我已經關閉了Smarty引擎中的緩存,所以我認爲這並不重要。此外,處理Ajax調用的PHP文件不使用Smarty模板。