2014-03-02 86 views
-2

我想發送給php一個json數組。 我很確定數據正在發送,但我沒有弄清楚如何解析它。 正如你可以在下面的代碼中看到用ajax發送一個json數組到php

的javascript:

var employees = [ 
    { "firstName":"John" , "lastName":"Doe" }, 
    { "firstName":"Anna" , "lastName":"Smith" }, 
    { "firstName":"Peter" , "lastName": "Jones" } 
    ]; 

    $.ajax({ 
     url:an url, 
     type:"POST", 
     data:employees, 
     dataType:"json", 
     success: function (data, textStatus, xhr) { 
      alert(data); 
     }, 
     error: function (xhr, textStatus, errorThrown) { 
      alert (errorThrown); 
     } 
    }); 

PHP:

<?php 
    header('Content-Type: application/json'); 

    $data = json_decode($_POST['employees']); 
     //how do I access the name in the first item ?? 
     $data = array('success'=>$data[0].firstName); 
    echo json_encode($data); 

?> 

在先進的感謝, 加。

+2

MDSL的答案似乎是正確的 - 但你可能只是閱讀手冊,或在運行的var_dump結果你自己。 –

回答

0

如果您通過true作爲第二個參數json_decode,您將獲得一個關聯數組,並可以通過$data[0]['firstName']訪問John。

0

你不發送數據,JSON,編碼數據與JSON.stringify JSON和內容類型設置爲JSON

contentType: 'application/json', 
    data: JSON.stringify(employees), 

然後讀取服務器

$data = json_decode(file_get_contents('php://input'), true); 
$data = array('success'=>$data[0].firstName); 
echo json_encode($data); 
0

上的數據employees是一個對象數組,而不是JSON。即使您訪問的是$_POST['employees'],也不會將關鍵「員工」的任何數據發送到服務器。

如果您想要這樣做,那麼您必須將employees轉換爲JSON並將其分配給關鍵「employees」。

data: {employees: JSON.stringify(employees)} 

而且在PHP,對象的成員通過->訪問,不.

$data[0]->firstName 
0
   <?php 
        header('Content-Type: application/json'); 
       $var ='[ 
        { 
         "firstName": "John", 
         "lastName": "Doe" 
        }, 
        { 
         "firstName": "Anna", 
         "lastName": "Smith" 
        }, 
        { 
         "firstName": "Peter", 
         "lastName": "Jones" 
        } 
       ]'; 
        $data = json_decode($var); 
        echo $data1 = $data[0]->firstName; 

        echo json_encode($data); 

       ?> 
+0

這只是用於獲取單個數據,或者正如你在上面告訴你沒有弄清楚如何解析它[使用此鏈接來檢查我的代碼](http://codepad.org/X3jVXz2t) –

+0

OP的主要問題是如何*發送*數據,而不是如何解析它。 –