Php jquery`.ajax`不工作
我是一名n00b,试图通过在线教程学习jqueryPhp jquery`.ajax`不工作,php,jquery,ajax,json,Php,Jquery,Ajax,Json,我是一名n00b,试图通过在线教程学习jquery.ajax 我在本地主机上有以下“客户端”代码: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title></title> <script src="http://ajax.googleapis
.ajax
我在本地主机上有以下“客户端”代码:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script>
<script>
// wait for the DOM to be loaded
$(document).ready(function() {
$("#submit_btn").click(function(){
$.ajax({
type: "POST",
url: "response.php",
dataType: 'json',
data: { name: "John", location: "Boston" }
}).done(function( msg )
{
alert( "Data Saved: " + msg );
});
});
});
</script>
</head>
<body>
<input type="submit" name="submit" class="button" id="submit_btn" value="Send" />
</body>
</html>
//等待加载DOM
$(文档).ready(函数(){
$(“#提交”_btn”)。单击(函数(){
$.ajax({
类型:“POST”,
url:“response.php”,
数据类型:“json”,
数据:{姓名:“约翰”,地点:“波士顿”}
}).done(函数(msg)
{
警报(“保存的数据:“+msg”);
});
});
});
我的“服务器”端文件“response.php”中有以下代码:
<?php
if (isset($_POST))
{
$answer = $_POST;
echo json_encode($answer);
} else {
echo json_encode("no good");
}
?>
当我单击“发送”按钮时,会收到一条提示,提示“数据已保存:[对象]”。我正在尝试获取警报,以显示使用单击事件通过“post”提交的数据。我希望警报显示'name:'John',Location:'Boston'。保存的数据:“+msg.name+”+msg.Location
您收到的是JSON
对象,因此在javascript
中打印对象将打印[object object]
。您应该使用
(点)操作符访问对象的属性以获取名称和位置
假设您的响应是以下JSON对象:
msg={name:“John”,last_name:“Doe”}
要访问name
对象的msg
属性,请使用点运算符:
console.log(msg.name)代码>
为了使您的代码具有通用性,您应该能够以某种方式告诉客户机请求是好是坏。因此,您可以像这样发送状态
:
<?php
if (isset($_POST))
{
$answer = $_POST;
$answer['status'] = true;
echo json_encode($answer);
} else {
echo json_encode(array('status' => false, 'msg' => 'no good'));
}
?>
更新:
还有一件事:一旦决定使用JSON
,就不要将text/plain
发回。这正是你在这里所做的:
echo json_encode(“不好”)代码>
此代码a生成字符串“no good”
,它是文本/普通的,但不是有效的JSON
对象
检查您的控制台是否有任何错误,它可能会抛出解析错误我不是php高手,但我对json\u encode(“不好”)
给出json o/pis请求作为response@Nemoden,非常感谢。然而,我对客户端的“功能(响应)”感到困惑。“response”是否与服务器端文件的名称有关:“response.php”?不,它只是回调函数的一个参数。可能是任何东西。@Nemoden,好的。我想我终于开始明白了。所以,您使用的“response”类似于我在原始代码中使用的“msg”,是吗?这只是一种将响应从服务器传递到函数的方法,是吗?再次感谢你的帮助。
function(response) {
if (response.status) {
console.log('yep, post was submitted, name is ' + response.name + ', location is ' + response.location);
}
else {
console.log('something went wrong: ' + response.msg);
}
}