【问题标题】:AJAX request returns nullAJAX 请求返回 null
【发布时间】:2016-03-31 18:09:41
【问题描述】:

我有以下 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]);,则警报窗口甚至不会显示给聚会

【问题讨论】:

  • 如果你只是做alert(response);
  • console.log(response); 以便在浏览器的 JavaScript 控制台中更轻松地检查它。
  • 如果在 PHP 代码开头使用header('Content-type: application/json'); 会怎样?
  • @Musa alert(response); 给我一个空警报
  • @MasterOdin console.log(response); 显示相同的行为

标签: javascript php jquery ajax


【解决方案1】:

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 是迭代数组的工作示例。

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

【讨论】:

  • 我尝试按照您的建议对其进行迭代,但这也不起作用。看起来 JSON 对象甚至没有被传递给我的 AJAX 函数
  • 做一个 console.log(response) 看看会发生什么。
  • 我得到空括号[]
  • 这意味着,它正在获取一个空数组。您需要检查您的服务器代码以确保它返回正确的数组。
  • 我已经检查过了。我在 HTML 页面中包含了retrieve.php,它回显了一个有效的 JSON 数据集。问题是当我尝试通过 AJAX 获取 JSON 时。
【解决方案2】:

试试:

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

【讨论】:

    猜你喜欢
    • 2013-10-23
    • 1970-01-01
    • 1970-01-01
    • 2019-08-26
    • 2017-03-12
    • 2023-03-07
    • 1970-01-01
    • 2013-04-23
    • 2011-10-19
    相关资源
    最近更新 更多