0

次のコードがありますが、ajax を使用して渡されたオブジェクトのコンテンツにアクセスできません。私は何が欠けていますか?

$(".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] は [object オブジェクト][object オブジェクト] を表示します。助けてくれてありがとう。

4

2 に答える 2

0

フォーム送信を介して生のオブジェクトを送信することはできません。最初にそれらをテキストにフラット化する必要があります。これはシリアル化によって行われます。これを行う最も簡単な方法は JSON を使用することです。これは、クライアント言語とほとんどのサーバー言語の両方ですぐに理解できるためです。

あなたの場合、AJAX 呼び出しの my_obj 部分を my_obj: JSON.stringify(my data) に置き換えます。

于 2013-03-17T00:27:31.447 に答える
0

私が見るいくつかの問題があります:

1、入力をクリックしてフォームを送信できるので.submit()、「submit.click()」ではなくメソッドを使用します。

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

return false2、あなたの.submit()方法であなたがしない限り、フォームは送信されます

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

3、add.phpあなたは情報を返す必要がありjsonます:

echo json_encode($new_post);

4、あなたは設定statusしていませんadd.php

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

うまくいけば、これがあなたの出発点になるでしょう。

* *注:これは、送信先の変数を考慮していませんadd.php

于 2013-03-17T00:26:18.313 に答える