【问题标题】:JSON onFailure issueJSON onFailure 问题
【发布时间】:2010-04-26 15:57:49
【问题描述】:

我无法让 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
  });
}

3rd 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)"

【问题讨论】:

    标签: php html ajax json


    【解决方案1】:

    onFailure 的回调是否提供任何参数?例如,在 jQuery 中有 3 个参数可以为您提供有关错误的信息。我遇到了类似的问题,即使没有连接错误,error 回调也会不断被调用。问题原来是格式错误的 JSON。您能否确认您的 JSON 格式正确?

    更新

    我刚刚查看了Request 的文档,并注意到onFailure 的签名中可以包含xhr。尝试查看XMLHttpRequest 对象的statusstatusTextresponseText 属性。这将为您提供有关问题所在的线索。

    试试这个:

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

    【讨论】:

    • 我认为你是对的——但是我没有得到下拉框的错误...如果我把 onFailure 全部遗漏了,我不会将数据添加到 MySQL,对不起,我对 Mootools 了解不够,无法检查 XMLHttpRequest 对象。
    • 即使我有 onFailure 做任何事情,但它不会添加数据的警报...我很困惑。
    • 尝试将 onFailure 处理程序更改为我在上面的答案中显示的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-28
    • 2011-10-24
    • 2013-01-05
    • 2011-10-22
    相关资源
    最近更新 更多