我在頁面上使用兩個ajax調用: 在頁面的一側,我使用ajax post發佈數據並在數據庫中提交顏色(表名:color_store),另一方面,我嘗試從該表中獲取所有顏色,並通過單擊按鈕將其置於選擇標記中。 但即使提交新顏色,我仍然會收到舊數據。ajax調用後獲取舊數據(get方法)Laravel 5.5
這裏是我的顏色提交表單:
<form method="post" action="/CRM/defineColor" id="colorPickingForm">
<input id="colorName" name="colorName" type="text">
<button type="button" class="btn blue" id="addColor">submit</button>
</form>
這裏是我的ajax到顏色提交到數據庫:
$('#addColor').click(function(){
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
var colorName = $('#colorName').val();
$.ajax({
url: "/CRM/defineColor",
type:"POST",
data:{ colorName: colorName},
success: function(data) {
$("#result").empty().append(data)
}
})
這裏是選擇標籤和按鈕顯示數據:
<select class="form-control" id="colorFetch">
</select>
<button type="button" class="btn red" id="colorRefresh">Color Update</button>
這裏是AJAX調用獲取所有的顏色:
$.ajax({
url: "/CRM/fetchColor",
type:"get",
dataType: "json",
cache: false,
contentType:"application/json; charset=utf-8",
success: function(colorNameReq) {
$("#colorRefresh").click(function(){
//loop through json object
$("#colorFetch").empty();
$.each(colorNameReq, function(key, value) {
$('#colorFetch')
.append($("<option></option>")
.attr({
id:key,
value:value
})
.text(value));
});
});
}
})
這裏是我的控制器,得到所有的顏色數據庫:
protected function fetchColor(){
$colorInfo = new Color_store;
$colorInfo = $colorInfo->get();
$count = count($colorInfo);
for($i = 0 ; $i < $count; $i++){
$colorName[] = $colorInfo[$i]->colorName ;
}
$colorName=json_encode($colorName);
return $colorName;
}
那麼,爲什麼我收到甚至在將顏色提交到數據庫之後,JSON對象的舊值?我真的不明白,是不是ajax想給我新的數據?
例如: 當我加載頁面並按下「顏色更新」按鈕時,它會顯示我以前提交的兩種顏色(紅色和綠色)。但是當我向數據庫提交新顏色時,讓我們說黃色。按下「顏色更新」按鈕後,它會再次顯示紅色和綠色,但列表中沒有顯示黃色。是不是假設在列表中顯示新的顏色(紅色,綠色和黃色)?
任何幫助,將不勝感激!
@Sahand Khodaparast –
您的JavaScript的第二塊創建一個Ajax請求(大概在頁面加載)。如果你想在點擊按鈕時發出新的請求,那麼ajax調用應該在點擊處理程序中完成,而不是像你現在所做的那樣。 – Steve
@Steve哦!謝謝你,你其實是對的。 **我還有一個問題**,我怎樣才能設置間隔計時器到該Ajax調用,以便每2秒加載顏色表的內容,並且不要一遍又一遍地重複顏色?我想只更新列表。 –