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>

添加.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] [object Object]。谢谢你的帮助。

4

2 回答 2

0

我看到了一些错误的地方:

1、表单可以通过点击回车提交,所以我会使用一个.submit()方法而不是'submit.click()':

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

2,表格将提交,除非你return false在你的.submit()方法

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

3、在add.php您需要返回的json信息:

echo json_encode($new_post);

status4 、你没有设置add.php

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

希望这会给你一个开始。

* *注意:这不考虑您发送到的变量add.php

于 2013-03-17T00:26:18.313 回答
0

您不能通过表单提交发送原始对象,您需要先将它们展平为文本。这是通过序列化完成的,最简单的方法是通过 JSON,因为它在客户端和大多数服务器语言上都可以理解。

在您的情况下,将 AJAX 调用中的 my_obj 部分替换为: my_obj: JSON.stringify(my data)

于 2013-03-17T00:27:31.447 回答