2017-07-29 61 views
0

JavaScript代碼如何讀取在PHP服務器端對象值

function addSupplier(supplier) { 
    alert(supplier.name); 
    alert(supplier.mobile); 
    var deferred = $q.defer(); 
    $http.post(REST_SERVICE_URI, supplier) 
     .then(
      function (response) { 
       deferred.resolve(response.data); 
      }, 
      function(errResponse){ 
       console.error('Error while creating Supplier'); 
       deferred.reject(errResponse); 
      } 
     ); 
    return deferred.promise; 
} 

PHP代碼

/*Create New Supplier*/ 
$app->post('/suppliers', function() use ($app) { 
    // check for required params 
    //verifyRequiredParams(array('name', 'mobile')); 
    $response = array(); 
    $name = $app->request->post($supplier->name); 
    $mobile = $app->request->post($supplier->mobile); 

    $db = new DbHandler(); 
    $supplier_id = $db->createSupplier($name, $mobile); 

    if ($supplier_id != NULL) { 
     $response["error"] = false; 
     $response["message"] = "Supplier created successfully"; 
     $response["supplier_id"] = $supplier_id; 
    } else { 
     $response["error"] = true; 
     $response["message"] = "Failed to create supplier. Please try again"; 
    } 
    echoRespnse(201, $response); 
}); 

我想讀的PHP supplier.name和supplier.mobile。上面的代碼不起作用。

+0

'$ app-> request-> post('name')'和'$ app-> request-> post('mobile')'也許? – bishop

回答

0

這裏有兩個問題。

之一是,你需要閱讀已傳遞的參數,這可能是在那裏你用它

// check for required params 
verifyRequiredParams(array('name', 'mobile')); 

$name = $app->request->post('name'); 
$mobile = $app->request->post('mobile'); 

...作爲$supplier沒有定義。

第二個問題是你是而不是檢查邏輯錯誤。您在then()中使用的第二個功能只會在發生HTTP錯誤時觸發。

但從一個HTTP來看,這是一個正確的響應

{ 
    error : true, 
    message: 'Failed to create Supplier' 
} 

,所以你需要在你的響應處理程序來檢查這一點。此外,您嘗試返回的值(「數據」)實際上並非由PHP提供,因此您必須返回其他內容(我猜供應商ID):

function (response) { 
    var msg; 
    if (!response.hasOwnProperty('error')) { 
     console.error('unexpected server response', response); 
     deferred.reject({ error: true, message: 'Bad server response' }); 
     return; 
    } 
    if (response.error) { 
     if (response.hasOwnProperty('message')) { 
      msg = response.message; 
     } else { 
      console.error('missing server error message', response); 
      msg = 'unknown error'; 
     } 
     deferred.reject({ error: true, message: msg); 
     return; 
    } 
    // Here the supplier ID is finally known. 
    deferred.resolve({ error: false, id: response.supplier_id }); 
相關問題