2015-02-06 156 views
0

我在雲端代碼中遇到HTTP請求的問題,並且出於某種原因,它實際上並未獲取成功或錯誤消息。它會註銷我編碼的JSON變量,但似乎根本不執行HTTP請求。關於我的問題的任何想法?HTTP Post請求不會執行成功或錯誤

Parse.Cloud.job("getUsers", function(request, status) { 
    // Query to get users 
    var users = Parse.Object.extend("_User"); 
    var query = new Parse.Query(users); 
    var t = 0; 
    query.notEqualTo("mkUsername", ""); 
    query.notEqualTo("mkPassword", ""); 
    query.equalTo("canUseMK", "1"); 
    query.find({ 
     success: function(results) { 
      for (var i = 0; i < results.length; ++i) { 
       var object = results[i]; 
       var requestVariables = { mkUsername: object.get("mkUsername"), mkPassword:object.get("mkPassword"), userID: object.id }; 
       var requestJsonString = JSON.stringify(requestVariables); 
       console.log(requestJsonString); 
       Parse.Cloud.httpRequest({ 
        method: 'POST', 
        url: 'http://url.com/api_trial.php', 
        headers: { 
         'Content-Type': 'application/json;charset=utf-8', 
         'authKey' : 'XXXXXXXXXX' 
        }, 
        body:requestJsonString, 
        success: function(httpResponse) { 
         ++t; 
         console.log(httpResponse.text); 
         response.success(httpResponse.text); 
         status.message("User "+ i + " Response " + httpResponse.status); 
        }, 
        error: function(httpResponse) { 
         //get the status code 
         if (httpResponse.status == 400) { 
          console.error('Request failed with response code ' + httpResponse.status); 
          response.error('Request failed with response code ' + httpResponse.status); 
         } 
         else if (httpResponse.status == 401) { 
          console.error('Request failed with response code ' + httpResponse.status); 
          response.error('Request failed with response code ' + httpResponse.status); 
         } 
         else if (httpResponse.status == 409) { 
          console.error('Request failed with response code ' + httpResponse.status); 
          response.error('Request failed with response code ' + httpResponse.status); 
         } else { 
          console.error('Request failed with response code ' + httpResponse.status); 
          response.error('Request failed with response code ' + httpResponse.status); 
         } 
        } 
       }); 
      } 
      status.success("Synced "+ i + " Users Data"); 
     }, 
     error: function(error) { 
      status.error("Had query issue: " + error); 
     } 
    }); 
}); 

回答

0

的HTTP請求被異步執行的,但你直接啓動可能無法完成的HTTP請求後,呼叫status.success

這會使作業返回,因爲它已完成,並且任何正在運行的HTTP請求應該終止,從而導致您看到的行爲。將status.success的呼叫轉移到您的請求的成功函數中,應該沒問題。