2015-02-06 153 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的呼叫转移到您的请求的成功函数中,应该没问题。