2017-07-29 72 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 });