如何通过jQuery Ajax发布数据在PHP中编码JSON
How do I encode JSON in PHP via jQuery Ajax post data?
我有一个HTML表单,点击提交按钮时将数据发送到php文件。
$.ajax({
url: "text.php",
type: "POST",
data: {
amount: amount,
firstName: firstName,
lastName: lastName,
email: email
},
dataType: "JSON",
success: function (data) {
console.log("ok");
$("#result").text(data);
}
});
在 PHP 中:
<?php
$amount = $_POST["amount"];
$firstName = $_POST["firstName"];
$lastName = $_POST["lastName"];
$email = $_POST["email"];
if(isset($amount)){
$data = array(
"amount" => $amount,
"firstName" => $firstName,
"lastName" => $lastName,
"email" => $email
);
echo json_encode($data);
}
?>
结果是 [对象对象]。我想要这样的类型:
{"Amount":"12.34", "FirstName":"Any", "LastName":"Tester", "Email":"a.test@something.com"}
我做错了什么?
使用 JSON.stringify 的代码示例:
<html>
<head>
<title>jQuery Test</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#submit").click(function(){
$.ajax({
url: "text.php",
type: "POST",
data: {
amount: $("#amount").val(),
firstName: $("#firstName").val(),
lastName: $("#lastName").val(),
email: $("#email").val()
},
dataType: "JSON",
success: function (jsonStr) {
$("#result").text(JSON.stringify(jsonStr));
}
});
});
});
</script>
</head>
<body>
<div id="result"></div>
<form name="contact" id="contact" method="post">
Amount: <input type="text" name="amount" id="amount"/><br/>
firstName: <input type="text" name="firstName" id="firstName"/><br/>
lastName: <input type="text" name="lastName" id="lastName"/><br/>
email: <input type="text" name="email" id="email"/><br/>
<input type="button" value="Get It!" name="submit" id="submit"/>
</form>
</body>
</html>
文本.php
<?php
$amount = $_POST["amount"];
$firstName = $_POST["firstName"];
$lastName = $_POST["lastName"];
$email = $_POST["email"];
if(isset($amount)){
$data = array(
"amount" => $amount,
"firstName" => $firstName,
"lastName" => $lastName,
"email" => $email
);
echo json_encode($data);
}
?>
您的对象很可能被正确传递。这是您捕获结果的方式,如@Spudley解释的那样返回[object object]
。控制台不知道如何显示构造,但您可以使用object.attribute
语法显示特定属性。使用 JS 端的 console.log()
或下面的代码进行美化输出。
// Indent with tabs
// Data is the parameter sent to the success function in the ajax handler
JSON.stringify( data , null, ''t');
从 如何在 (unix) shell 脚本中漂亮地打印 JSON?
此外,如果您感觉到某处存在错误,请暂时删除 ajax 处理程序上的dataType
。让输出显示在 GET 请求上应该可以。对于修改数据库删除或更改等内容的任何操作,将其更改回 POST。
最后,修改标题,如@GroovyCarrot的答案所示。如果您使用的是Chrome,则额外的空格似乎是一个错误:Chrome中的JSON输出周围带有制表符和预包装
尝试添加
header('Content-type: application/json');
在 PHP 脚本的顶部,看看你得到了什么
希望对您有所帮助!
编辑:忘了提到你应该像这样访问你的值:data.amount
你不能直接将 JSON 对象插入到 dom. JSON 对象toString()
方法将始终给出 u [对象对象],这就是你得到这个的原因。您必须使用 JSON.stringify(data)
或者你必须运行$.each(data,function(val){ $("#result").append(val) })
.
您正在将结果对象转换为字符串,而不是显示它。
如果你想在某个包装器中打印对象,而不是结果,你可以做这样的事情:
var text = '{';
for(var i in data) {
var value = data[i];
text += '"'+i+'":"'+value+'", ';
}
text += '}';
$('#result').text(text);
但您可能会认为console.log
是查看 json 格式响应的更简单、更快捷的方法。
- 如何使用jquery返回php-json数组对象
- 无法读取js中的php JSON编码数据
- PHP JSON编码输出与Javascript Ajax不兼容
- 如何在php JSON编码结果中包含谷歌分析
- jQuery在没有数据库的情况下从php-json自动完成
- AJAX PHP JSON编码未返回所有结果
- 将编码的 PHP JSON 传递给 JavaScript
- PHP json 格式编码
- 如何创建正确的 PHP JSON 响应
- 如何从 PHP JSON 编码制作这个 JavaScript 对象
- 钛 - PHP + JSON 解析错误
- php json - 仅从数组中获取第一个元素
- 创建一个 PHP json 提要并成功将其链接到 javascript
- DatePicker php json 不起作用
- 在 Javascript 中解析 PHP/JSON 数据
- 将 php JSON 对象转换为数组
- PHP JSON 不能回显值,总是返回一个数组
- 为什么 php json 响应不会将数据数组发送回 ajax jquery 请求
- PHP JSON Returns u0000
- 在 JavaScript 中使用 php json 结果