Ajax调用失败; xhr.responseXML未定义

时间:2015-06-14 21:16:22

标签: php jquery ajax xmlhttprequest

我试图做一个简单的ajax调用:

  

当用户选择并选项时,有关该选项的一些信息将是   回应成div(这是动态的)

这是我的ajax调用代码

ajax.js

$(document).ready(function()
{ 
//Add Event 
    //Currently Broadcasting @Zone 
    $('#beacon0').on('change', function () 
    {
        var Selected = $(this).find("option:selected");
        var SelectedText   = Selected.text();
        var SelectedEncoded = encodeURIComponent(SelectedText);

        $.ajax
        ({
        url:        'ajax-addevent.php',
        data:       'n_beacon='+ SelectedEncoded,
        dataType:   'JSON',
        success: function(returnClass)
            {
                var resultajax = jQuery.parseJSON(returnClass)
                console.log(resultajax);
            },
        error: function(xhr, status, error) 
            {
                var errors = JSON.parse(xhr.responseText);
                console.log("failed");
                console.log (errors);
            }
        });
    });

});

所以ajax调用应该在URL中给出区域的名称,所以我可以在我的PHP脚本中$ _GET参数。这是我运行的php只是为了测试ajax调用。

Ajax的addevent.php

<?php
include("classes/event.class.php");

$event = new Event();
$GetZoneName = $_GET['n_beacon'];
$ZoneName = urldecode($GetZoneName);
$arrayDetails = $event->getBeaconEvent($ZoneName);
while($row = mysqli_fetch_array($arrayDetails))
{
        $EventTitle = $row["n_title"];
        $EventLink = $row["n_link"];
        $EventDate = $row["n_date"];
}
        $arr = array( "EventTitle" => $EventTitle,
                           "EventLink" => $EventLink, 
                           "EventDate" => $EventDate );

        header("content-type:application/json");

        $json_arr = json_encode($arr);

        return $json_arr;
?>

我的问题是ajax调用失败并给出了结果:

Error

为什么我的ajax打电话有什么不对?你能帮忙吗?

编辑更新代码:

1 个答案:

答案 0 :(得分:0)

当返回的数据类型为JSON时,您尝试获取XML响应 - xhr.responseXML将始终未定义,除非响应是有效的XML。

请尝试使用xhr.responseText。您可以使用JSON.parse(xhr.responseText)从中获取javascript对象。

另一个好方法是使用当前浏览器的开发工具直接检查网络响应(在Firefox或Chrome中为F12,然后打开“网络”选项卡)。