2013-03-17 33 views
0

我有以下代碼,但我無法訪問使用ajax傳遞的對象的內容。我錯過了什麼?POST對象使用AJAX到PHP

$(".submit").click(function(){ 
    var fruits = {"fruits" : ["apples","banana","oranges"]}; 
    var cars = {"cars" : ["BMW", "Honda", "Toyota"]}; 
    var my_Obj = fruits + cars; 
    mydata = JSON.stringify(my_Obj); 
    $("#mydata").val(mydata); 
    $.ajax({ 
    url: "add.php", 
    type: "POST", 
    data: { 
     name: $('#name').val(), 
     Address: $('#Address').val(), 
    my_obj : $mydata 
    }, 
    datatype: "json", 
    success: function (status) { 
     if (status.success == false) { 
     alert("Failure!"); 
     } else { 
     alert("Success!"); 
     } 
    } 
    }); 
}); 


    <form id="json" method="post" action="add.php"> 
    <input type="text" name="name" id="name" value=""> 
    <input type="text" name="address" id="Address" value=""> 
    <input type="text" name="mydata" id="mydata" hidden> 
    <input type="submit" name="submit" id="submit" class="submit" value="send"> 
    </form> 

add.php

$new_post['id'] = $_POST['id']; 
$new_post['name'] = $_POST['name']; 
$new_post['address'] = $_POST['address']; 
$new_post['my_obj'] = $_POST['mydata']; 
print_r ($new_post); 

[my_obj]顯示[對象的對象] [對象的對象。 感謝您的幫助。

+1

你有一個叫做'mydata'變量,但你嘗試使用它作爲'$ MYDATA ',這不是變量的名稱。 PHP變量預先設置了一個'$',但是在JavaScript中,這只是另一個字符作爲變量名稱的一部分,因此您使用的是未定義的變量。當你調試這個時,實際的POST被髮送到服務器是什麼?您可以在瀏覽器調試工具(如Firebug)中捕獲它,以查看傳遞的內容。 – David 2013-03-17 00:24:55

+0

此外,$ mydata和mydata是潛在的(可能是故意的)全局泄漏。一旦你解決了其他問題,你可能會發現'水果+汽車'並沒有達到你的意思。由於您使用的是jQuery,因此您可能需要閱讀jQuery.extend(http://api.jquery.com/jQuery.extend/)。 – 2013-03-17 00:33:30

回答

0

有幾件事情錯了,我看到:

1,此表可通過點擊進入提交,所以我會用一個.submit()方法,而不是「submit.click()」:

$('form').submit(function(){ 
}); 

2,表單將在您的.submit()方法

$('form').submit(function(){ 
    // all of your code 
    return false; 
}); 

3提交除非你return false,在add.php你需要返回json資料:add.php

$new_post['status'] = true; // or false depending on what your trying to do 

echo json_encode($new_post); 

4,你是不是設置status希望這會給你一個開始。

* *注:這不會考慮到要發送到add.php

0

無法通過表單發送原始對象提交的增值經銷商,你需要展平,然後先爲文本。這是通過序列化來完成的,最簡單的方法就是通過JSON,因爲它可以在客戶端和大多數服務器語言開箱即可使用。 my_obj:

在你的情況下,在AJAX調用與更換my_obj部分JSON.stringify(我的數據)

+0

仍然得到相同的結果[object Object] [object Object] – user2099032 2013-03-17 15:18:18