AJAX / PHP / Jquery Проблема с обратным вызовом - PullRequest
0 голосов
/ 29 апреля 2011

Я не могу понять, почему это не сработает. Я вычеркнул все элементы и сообразил это с базовым примером. Может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно. Когда я нажимаю кнопку на 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 голосов
/ 29 апреля 2011

Я только что попробовал точный код, и он работает нормально.Вы пропустили открывающие скобки php (<?php) из кода, перечисленного выше, но это была просто ошибка?

0 голосов
/ 29 апреля 2011

Я думаю, что вы пропустили открытие 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);
?>
0 голосов
/ 29 апреля 2011

Код выглядит чистым.Попробуйте использовать php buffering .Поставьте ob_start() в самом начале файла PHP и в коде

// cleans the buffer
ob_clean();    
echo json_encode($return);
die();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...