2015-11-28 150 views
0

我在做什麼: 1.最初根據某些輸入向服務器發出ajax請求 2.服務器返回由RQ(Python-rq)生成的作業ID,與作業ID構建 3.基於一個URL進行的作業ID Ajax請求定期,直到一個有效的響應,獲得Jquery Ajax服務器輪詢;根據早期的ajax響應輪詢服務器

我有什麼:

$.ajax({ 
    type: "POST", 
    url: "/start", 
    data:{crop: valueCrop, state: valueState, variablemeasure: valueVariable, unit:unitMeasure, from:yearFrom, to:yearTo}, 
    success: function(results) { 
     console.log(results); 
     var jobId=''; 
     jobId = results; 
     function ajax_request() { 
      $.ajax({ 
       type: "GET", 
       url: "/results/" + jobId, 
       dataType: "json", 
       success:function(xhr_data) { 
        if (xhr_data == {"status":"pending","data":[]}){ 
         console.log("Waiting for response"); 
         setTimeout(function() { ajax_request(); }, 2000); 
        } else { 
         console.log(xhr_data); 
        } 
       }, 
       error:function(error) { 
        console.log(error) 
       }  
      }); 
     } 
    }, 
    error: function(error) { 
     console.log(error) 
    }  
}) 

這甚至可能嗎?我在控制檯上沒有得到任何輸出,儘管rq說這個工作已經完成了。我認爲它不進入,如果循環。當我訪問「/ results/jobId」網址時,我可以看到結果。 請幫忙。

+0

我能看到的作業ID在控制檯中。然後沒有。 –

回答

1

我在這段代碼中看到一些錯誤。首先,你已經定義了功能ajax_request()。但你不是在呼喚它。您可以在其定義結束時調用它。

其次,這個代碼是有問題的:

if (xhr_data == {"status":"pending","data":[]}) 

的對象符號創建另一個對象,它是絕對不等於xhr_data

你可以這樣做:

if (xhr_data.status === "pending") 
+0

嗨Ganesh,我現在就自己修好了。你指出了主要的錯誤。非常感謝您的努力。 –

+0

這是我現在修復的問題:http://pastebin.com/nt5SGwhH –