我创建了一个简单的PHP脚本。如果输入"hello"
作为POST参数name
,则应返回错误。否则,它应该返回成功。返回值应出现在DIV中。
但它不起作用?为什么不呢?
if(isset($_POST)){
$name = $_POST['name'];
if($name == 'hello'){
echo json_encode(array('comment_error' => 'You cant say hello'));
} else {
}
echo json_encode(array('comment_success' => 'awesome! It worked'));
}
以下是解析响应的javascript:
$.ajax({
type: 'POST',
url: 'comment/post.php',
data: {name:name},
dataType: 'json',
success:function(data){
if(data.comment_error){
alert(data.comment_error);
} else {
$('div').append(data.comment_success);
}
}
});
答案 0 :(得分:2)
将最后一行php代码移入else条件并更改js代码
data = JSON.parse(data); // add this in your call back
if(data.comment_error){
alert(data.comment_error);
} else {
$('div').append(data.comment_success);
}
答案 1 :(得分:2)
你必须发送Json标题头('Content-Type:application / json');
header('Content-Type: application/json');
if(isset($_POST)){
$name = $_POST['name'];
if($name == 'hello'){
echo json_encode(array('comment_error' => 'You cant say hello'));
} else {
}
echo json_encode(array('comment_success' => 'awesome! It worked'));
}
答案 2 :(得分:0)
检查您的if else loop
代码应该是这样的
header('Content-Type: application/json');
if(isset($_POST)){
$name = $_POST['name'];
if($name == 'hello'){
echo json_encode(array('comment_error' => 'You cant say hello'));
} else {
echo json_encode(array('comment_success' => 'awesome! It worked'));
}
}
答案 3 :(得分:0)
放这个 echo json_encode(array('comment_success'=>'awesome!it working')); 在其他地方这样:
header('Content-Type: application/json');
if(isset($_POST)){
$name = $_POST['name'];
if($name == 'hello'){
echo json_encode(array('comment_error' => 'You cant say hello'));
} else {
echo json_encode(array('comment_success' => 'awesome! It worked'));
}
}
顺便说一下。如果您使用免费主机测试您的脚本,如000webhost,您应该知道他们在html中添加了额外的代码行。如果是这样,Ajax无法解析json对象。
无法解析:
<!-- Blabla 000webhost free hosting blabla -->
{"comment_success" : "awesome! It worked"}
<!-- Blabla 000webhost free hosting blabla -->
P.S你不需要var json = $.parseJSON(data);
,因为dataType = 'json'
为你做了。我的意思是成功“数据”已经是一个JSON对象。