带有回调的AJAX/PHP/Jquery问题

带有回调的AJAX/PHP/Jquery问题,php,jquery,ajax,callback,Php,Jquery,Ajax,Callback,我似乎不明白为什么这行不通。我已经剥离了所有元素,并将其剥离为一个基本示例。有人能告诉我我做错了什么吗。当我点击html页面上的按钮时,我得到了我的初始警报,但从未从我的回拨中得到警报 下面是我的html文件的代码。test.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <

我似乎不明白为什么这行不通。我已经剥离了所有元素,并将其剥离为一个基本示例。有人能告诉我我做错了什么吗。当我点击html页面上的按钮时,我得到了我的初始警报,但从未从我的回拨中得到警报

下面是我的html文件的代码。test.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script src="http://code.jquery.com/jquery-1.5.js"></script>

<script language="javascript" type="text/javascript"> 
$(document).ready(function()
{
$("#test").click(function()
{
    alert("!st");
    $.ajax({

        type : 'POST',

        url : 'test_ajax.php',

        dataType : 'json',

        data: {

        email : 'Jeremy'

        },

        success : function(data){

            alert(data.msg);

        },

        error : function(XMLHttpRequest, textStatus, errorThrown) {
            alert("error");
        }

    });
    return false;
});
});
</script>
</head>
<body>
<input name="test" id="test" type="button" value="Click Me"/>
<div id="results">
  Hello
</div>
</body>
</html>

无标题文件
$(文档).ready(函数()
{
$(“#测试”)。单击(函数()
{
警报(“!st”);
$.ajax({
键入:“POST”,
url:“test_ajax.php”,
数据类型:“json”,
数据:{
电子邮件:“杰里米”
},
成功:功能(数据){
警报(data.msg);
},
错误:函数(XMLHttpRequest、textStatus、errorshown){
警报(“错误”);
}
});
返回false;
});
});
你好
现在来看php:test_ajax.php

<?php

if (empty($_POST['email'])) {

    $return['error'] = true;

    $return['msg'] = 'You did not enter you email.';

}

else {

    $return['error'] = false;

    $return['msg'] = 'You\'ve entered: ' . $_POST['email'] . '.';

 }


 echo json_encode($return);
?>

如果您有任何帮助,我们将不胜感激

谢谢
杰里米

代码看起来很干净。尝试使用php。将
ob_start()
放在PHP文件的开头和代码中

// cleans the buffer
ob_clean();    
echo json_encode($return);
die();

我刚刚尝试了正确的代码,它工作正常。
您错过了php括号的开头(
我想您错过了php文件的开头和$return as array的声明。我尝试了这个方法,效果很好:

<?
$return = array();
if (empty($_POST['email'])) {
    $return['error'] = true;
    $return['msg'] = 'You did not enter you email.';
}
else {
    $return['error'] = false;
    $return['msg'] = 'You\'ve entered: ' . $_POST['email'] . '.';
}
echo json_encode($return);
?>


使用Firebug,您可能会发现AJAX请求有任何问题:您可以发布JSON响应吗?我们可以看到JSON响应吗?我肯定可以看到,但只是确保您有一个开始
我尝试添加ob_start和ob_clean。回拨仍然没有结果。请使用此Firefox+Firebug或给我们URL来检查请求。W当您单击按钮时,您得到了什么结果?我得到了电子邮件字段return…即“Jeremy”服务器是否可能不支持PHP?如果您直接转到test_ajax.PHP文件,它会返回什么?应该返回…{“error”:true,“msg”:“您没有输入您的电子邮件”。}这可能是客户端的问题。我试过firefox、safari和ieNot sure。我用FF3.6和IE9.0进行了测试,两者都很好,返回
{“error”:false,“msg”:“You have enter:Jeremy.”
。您可以使用Firebug控制台进行检查。使用完整的php开始标记进行检查
对不起,您的控制台应该显示ajax调用进程和返回值(如果有),但不确定您在哪里看到未定义的数据。