AJAX请求返回null

时间:2015-12-25 23:35:46

标签: javascript php jquery ajax

我有以下PHP:

<?php

 $get_messages = mysqli_query($mysqli, "SELECT * FROM messages");

 $messages = array();

 while ( $row = mysqli_fetch_array($get_messages)){

      $messages[] = array( 'name' => $row['name'], 'message' => $row['message']);
 }

 $json = json_encode($messages);
 echo $json;

?>

成功回应以下JSON:

     [{"name":"Ernest","message":"hello"},{"name":"Ernest","message":"hello"},{"name":"john","message":"yes"},{"name":"Diana","message":"I know\r\n"},{"name":"fgafg","message":"fgehfegfvg"},{"name":"fgafg","message":"fgehfegfvg"},{"name":"fgafg","message":"fgehfegfvg"},{"name":"gsfvgx","message":"fbhfxvcz"},{"name":"argttrhjyrbsgdzdc","message":"ahjtgfrdcvdfsevb"}] 

然后我有了这个JS:

$(document).ready(function(){

  $.ajax({
     url: 'retrieve.php',
     dataType: 'json',
     success: function (response) {
       alert(response[3]);
     }
   });
});

警告未定义。

这是什么问题?我们将非常感谢您的帮助。

注意:如果我将提醒更改为alert(response[3].name);alert(response[3][name]);,则提醒窗口甚至不会显示给提示

2 个答案:

答案 0 :(得分:0)

response是一系列包含namemessage属性的项目。所以你基本上应该遍历项目并访问它。

您需要确保您的ajax调用正在点击success处理程序。可以添加error处理程序来验证它。

success: function (response) {

   $.each(response,function(a,b){
     alert(b.name);
     alert(b.message);
   });       

 },
 error : function(a,b,c){
    alert("error");
    alert(c);
 }

Here是迭代数组的工作示例。

此外,如果您的页面中有任何其他脚本错误,它将无法正常工作。因此,请确保您没有任何其他脚本错误。您可以通过检查浏览器控制台来验证它。

答案 1 :(得分:0)

尝试:

$.ajax({
                type: "POST",
                data: {
                    message: JSON.stringify(message)
                },
                url: "retrieve.php",
                success: function(message) {
                        alert(message);
                }
            });