AJAX / PHP / Jquery回调问题

时间:2011-04-28 20:50:08

标签: 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 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>

现在为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);
?>

请非常感谢任何协助。

由于 杰里米

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

我刚刚尝试了确切的代码,它运行正常。 您从上面列出的代码中错过了开头的php括号(<?php),但这只是一个错误?

答案 2 :(得分:0)

我认为你错过了php文件的开放和$ return作为数组的声明。我试过这个并且工作正常:

<?
$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);
?>