JSON onFailure问题

时间:2010-04-26 15:57:49

标签: php html ajax json

我无法让AJAX / JSON功能正常工作。我有这个函数从下拉框中获取值,但现在我想使用一个锚标记来设置它的值。

我认为使用onClick事件将字符串传递给我用于下拉框的函数会很容易,但即使数据被添加到MySQL,我也会在JSON onFailure事件中收到警报。我尝试从onFailure事件中删除警报,但之后它不会添加数据。下拉仍然继续工作正常,没有警报。 (我应该注意,删除警报也打破了我的下拉框)

第一次我添加一个onClick事件......

<a href="<?php echo Settings::get('app.webroot'); ?>?view=schedule&action=questions" onmouseout="MM_swapImgRestore();" onmouseover="MM_swapImage('bre','','template/images/schedule/bre_f2.gif',1)" onclick="assignCallType('testing')";>

第二次检查main.js.php

    function assignCallType(type) {
    alert(type);
    new Request.JSON({
        url: "ajax.php", 
        onSuccess: 
            function(rtndata,txt){
                if (rtndata['STATUS'] != 'OK') 
                    alert('Status was not okay');
            },
        onFailure : 
            function () { 
            alert("onFailure") 
            }
    }).get({
        'action': 'assignCallType', 
        'call_type': type
    });    
}

第三个Ajax.php:变量返回PHP并且值被添加到MySQL但我在JSON onFailure事件中得到警报

if ($_GET['action'] == "assignCallType") {
    if ($USER->isInsideSales()) {
        $call_type = $_GET['call_type'];
        $_SESSION['callinfo']->setCallType($call_type);
        $_SESSION['callinfo']->save($callid);
        echo json_encode(array('STATUS'=>'OK'));
    } else {
        echo json_encode(array('STATUS'=>'DENIED'));
    }
}

知道我哪里出错了。这个和工作下拉列表之间的唯一区别是函数的调用方式,我使用了onchange="assignCallType(this.value)"

1 个答案:

答案 0 :(得分:0)

onFailure的回调是否提供了任何参数?例如,在jQuery中有3个参数可以为您提供有关错误的信息。我遇到了类似的问题,即使没有连接错误,error回调仍然被调用。问题结果是形成了严重的JSON。你能确认你的JSON格式正确吗?

<强>更新

我刚刚查看了Request的文档,发现onFailure的签名中可以有xhr。请尝试查看status对象的statusTextresponseTextXMLHttpRequest属性。这会给你一个关于出了什么问题的线索。

试试这个:

onFailure: function(xhr) {
   console.log(xhr.status, xhr.statusText, xhr.responseText);
}