嘿傢伙,3:36上午,我需要精神上的提升。使用ajax將正好100個值添加到數據庫中
簡單的問題,什麼是最簡單/最快的方式來添加100點到數據庫。請假設由於重複,錯誤的數據等原因,所有寫入都不起作用。
我試圖用100個值更新數據庫。
一旦我有一個很好的數據,我需要將它添加到數據庫,我使用一個名爲updateDB的函數。
該函數只是向數據庫寫入經緯度座標。如果有重複或寫入失敗,我發送來自php的「錯誤」,並且循環應該繼續收集數據,直到我完全有100個數據庫點。這是我正在使用的功能。
cct用於xss預防,請忽略它,這工作正常。
////more above this
if(100-completed > dispatched)
dispatched++;
updateDB(lat,lng);
/// more junk and then this function
function updateDB(lat,lng)
{
var cct = $("input[name=csrf_mysite]").val();
$.ajax({
type: "POST",
url: "/form",
data: {
'lat': lat,
'lng': lng,
'id_set': id_set,
'csrf_complexity': cct },
success: function(result) {
var obj = jQuery.parseJSON(result);
if(obj.status === "OK")
{
completed++;
var marker = new google.maps.Marker(
{
icon: markerIcon,
position: new google.maps.LatLng(lat, lng),
map: map
});
$("#progressbar").progressbar("option", {
value: completed,
max: 100
});
$("#amount").text("Getting image " + completed + " of 100");
}
},
error: function(data){
//alert(data.responseText);
},
complete: function(data){
if(completed == 100)
window.location = "/start/curate";
dispatched--;
}
});
}
此功能不起作用。那麼有什麼想法爲什麼
它應該很簡單。調用updateDB,直到它達到100個附加值,並且只有在不可能有額外的調用時才調用updateDB。調度不會正常遞減,所以我假設每個事件都不會調用complete。
想法?或者任何其他方式來做到這一點將是非常棒的。
這將工作,如果這是同步的,但它不適用於異步進程。如果我已經完成了99次,它通常會有突出的線程。在頁面重定向時,通常它會完成2-3個線程,這意味着數據庫中有102-103個線程。 – 2011-03-28 08:06:36
即時通訊不是很多的PHP/jQuery的人 - 是否有一些方法,你必須在實例化你的ajax請求後調用,如:begin_send()? – markmnl 2011-03-28 10:00:50
當然你還需要一段時間,如果只評估一次 - 我已經更新了我的答案 – markmnl 2011-03-28 10:02:15