2011-06-03 111 views
0

我不會在提交事件時用ajax寫入一些值到數據庫中,之後我想再次查詢數據庫(使用ajax)來檢查將在第一個ajax動作之後寫入的響應。最後,如果響應值是「好的」,那麼我想刷新頁面,否則我會查詢2秒後,直到響應變好!提交之後make ajax call!

//Write into database form values on submit event 
$('form').submit(function(){ 
    $.post("submitForm.php", { "array": submitedArray}); 

//HOW to verify if submited values where well written into databse? 
    return false; 
}); 

//後才提交我想查詢數據庫,並基於響應值,我將刷新頁面,每兩秒鐘(如果響應值不太好)或刷新一次(如果值檢查是好的)

var refresh = setInterval(function(){ 
     $.getJSON('someOtherScript.php', function(data){ 
     $.each(data, function(index, value){ 
      //Check values 
    });      
     }); 
    }, 2000); 
+0

我假設你取消了這裏提交的表單 - 否則當響應回來時頁面已經消失。如果是這樣 - 問題是什麼?你是說你的代碼不工作 - 如果沒有發生什麼錯誤? – 2011-06-03 17:11:37

+0

不,我沒有取消表單,我只是想確保提交的表單將影響數據庫,然後查詢數據庫以檢查依賴於提交的數據庫的其他值,如果在第二個Ajax調用中返回的值沒關係,我會刷新一個特別的div,如果不是每兩秒刷新一次...... – obinoob 2011-06-03 17:17:30

+0

對不起,你是對的我將不得不取消表單提交事件並返回false; – obinoob 2011-06-04 15:24:30

回答

0

如果我有這個正確的,你使用ajax提交表單,並希望做回調檢查。

$.ajax({ 
    url: '/path/to/file', 
    type: 'POST', 
    dataType: 'xml/html/script/json/jsonp', 
    data: {param1: 'value1'}, 
    complete: function(xhr, textStatus) { 
    //called when complete 
    }, 
    success: function(data, textStatus, xhr) { 
    //called when successful 
    // This is where you will do your get request to find the result you are looking for. 
    }, 
    error: function(xhr, textStatus, errorThrown) { 
    //called when there is an error 
    } 
}); 
+0

非常感謝您的回答!但我無法讓它正常工作!目前我使用的是:// Ajax go here \t \t \t $ .post(「refreshOutputs。PHP」,{ 「arrBtn」:submitedRadios},功能(數據){ \t \t \t \t如果(數據== 「1」){ \t \t \t \t \t警報( 「成功」); \t \t \t \t \t // \t \t \t \t} \t \t \t \t如果(數據== 「0」){ \t \t \t \t \t警報( 「錯誤!」) \t \t \t \t} \t \t \t}); \t \t \t return false; – obinoob 2011-06-04 15:26:50

0

絕對不要使用setIntervalsetInterval將使該代碼每2秒執行一次,而不僅僅是2秒之後。你在找什麼是setTimeout。但是不要使用它。

看看

http://api.jquery.com/jQuery.post/

後可以採取success參數。這將讓你只有在第一次完成後才能運行第二個代碼。

+0

我相信這就是我需要的,我的意思是提交後我想查詢數據庫和返回的值做一些事情(刷新或不特別是div)我怎麼能用$ .post做到這一點?謝謝。 – obinoob 2011-06-03 17:23:51

+0

看看我的回答,$ .ajax和post一樣,只是它更容易獲得回調。 – 2011-06-03 17:26:16

0

爲什麼不只是初始提交代碼檢查數據庫寫入,如果成功則返回成功代碼,否則返回錯誤代碼。要麼你信任阿賈克斯,要麼你不信。

+0

怎麼回事?如何做呢? – obinoob 2011-06-03 22:01:56

+0

那麼......這裏的目標是什麼......客戶端確認數據庫事務發生了?如果是這樣,不需要兩次ajax旅行。 Ajax調用可以返回數據(或錯誤)。如果通話返回成功,您知道它成功了。如果調用返回一個錯誤 - 或者不返回 - 你可以確定出錯了。也許我誤解了潛在的問題。我的觀點是,如果你不相信ajax第一次工作,並返回成功或適當的錯誤代碼 - 爲什麼你後來相信它會告訴你它是否第一次工作。 – 2011-06-03 23:28:18

+0

我知道我不需要兩次ajax旅程來從db獲得確認...我將需要兩次ajax旅行,因爲我會期待某些設備將獲得submited值並更新控制字段...我將擁有閱讀第二次阿賈克斯之旅來更新正確的div有關於它的信息知道嗎?謝謝... – obinoob 2011-06-04 15:30:47

1
onComplete: function(){ 
    setTimeout(function() {$("#ajaxResponse").fadeOut();}, 500); 
} 

把這個寫在你的ajax函數中,就是這樣。它爲我工作。