我有以下代码,但我无法使用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显示对象对象。谢谢你的帮助。
发布于 2013-03-17 00:26:18
我发现有一些地方是错误的:
1,可以通过单击enter提交表单,因此我将使用.submit()
方法而不是'submit.click()':
$('form').submit(function(){
});
2,除非您在.submit()
方法中输入return false
,否则表单将提交
$('form').submit(function(){
// all of your code
return false;
});
3 .在add.php
中,您需要返回json
信息:
echo json_encode($new_post);
4,您没有在add.php
中设置status
$new_post['status'] = true; // or false depending on what your trying to do
希望这能给你一个开始。
**注意:这不会考虑您发送到add.php
的var
发布于 2013-03-17 00:27:31
您不能通过表单提交发送原始对象,您需要首先将它们展平为文本。这是通过序列化完成的,最简单的方法是通过JSON,因为JSON在客户端和大多数服务器语言上都是现成的。
在您的示例中,将AJAX调用中的my_obj部件替换为: my_obj: JSON.stringify(my data)
https://stackoverflow.com/questions/15456286
复制