[英]CodeIgniter AJAX, doesn't update/receive new data in database
我使用AJAX和CodeIgniter更新數據庫時遇到問題。 當有人發布AJAX表單時,我以這種方式從數據庫中檢索有關用戶的數據:
class MY_Controller extends CI_Controller
{
public $memberData;
public function __construct()
{
parent::__construct();
$this->memberData= $this->membermodel->getmemberData();
}
}
(每個控制器擴展MY_Controller
,而不是CI_Controller
)。
然后我操作用戶數據並將其插入數據庫。 問題是如果我發送AJAX帖子的速度非常快(很少同時發送),很少插入的行是相同的(除了自動遞增行ID)。 看起來CodeIgniter沒有從數據庫接收新的用戶數據(或者之前沒有更新它),我操作舊的。
我像這樣發送AJAX:
$("#form_id").submit(function(event)
{
$form = $(this);
$.post($form.attr('action'), $(this).serialize(), function(HTML)
{
//do something
});
return false;
});
然后我操作這樣的事情:
$CI =& get_instance();
$CI->load->model('membermodel', 'member');
$variab['value3'] = $CI->memberData->member_value3 + 1; //this is the line that need to be new on every call, but it doesnt
$variab['result'] = $this->calculatedata($variab['value3']);
$parameters = array(
'member_value3' => $variab['value3']
);
//update that variable to database, so it should have new value new on next call
$CI->member->updateinfo($parameters);
return $variab['value3'];
最后,我獲得了value3
,基於它我的整個腳本並將最后一個查詢插入數據庫。 不幸的是,就像我說的,如果我在同一時間發送許多POST
請求,那么值是不變的。
我用它,它應該在剪貼板上工作,
我發現它不久前就不記得源了。
(會搜索它)
來源 。
請閱讀注釋並使用控制台進行調試。
var r;
$("#form_id").submit(function(event){
if (r) {
r.abort(); //abort all previous requests
}
var $form = $(this);
var $inputs = $form.find("input, textarea, select, button"); //serialize all elements in form
var serializedData = $form.serialize(); //serialize data (prep data)
$inputs.prop("disabled", true); //disable inputs
r = $.ajax({
url: $form.attr('action'), //whatever.php
type: "post",
data: serializedData
});
// Callback handler that will be called on success
r.done(function (response, textStatus, jqXHR){
console.log("Form works: " + response);
});
// Callback handler that will be called on failure
r.fail(function (jqXHR, textStatus, errorThrown){
console.error(
"Error: "+
textStatus, errorThrown
);
});
r.always(function () {
$inputs.prop("disabled", false); //enable inputs
});
// Prevent default posting of form
event.preventDefault();
});
關於評論: 但如果有人改變這個JS代碼,他仍然可以破壞我的整個腳本,我必須得到它的安全。
請考慮以下發展順序。
這樣你就不會(很少)在你剛剛做的事情上遇到問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.