JSON onFailure проблема - PullRequest
       14

JSON onFailure проблема

0 голосов
/ 26 апреля 2010

У меня проблемы с настройкой функции AJAX / JSON для правильной работы. У меня была эта функция, получающая значение из выпадающего списка, но теперь я хочу использовать тег привязки, чтобы установить его значение.

Я думал, что будет просто использовать событие onClick для передачи строки в функцию, которую я использовал для выпадающего списка, но я получаю предупреждение в событии onFailure JSON, даже если данные добавляются в MySQL. Я попытался удалить предупреждение из события onFailure, но затем оно не добавляет данные. Раскрывающийся список продолжает работать нормально, никаких предупреждений. (Я должен отметить, что удаление предупреждения также сломало мой выпадающий список)

1-й я добавляю событие 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')";>

2-й я проверяю 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
    });    
}

3-й 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 голосов
/ 26 апреля 2010

Предоставляет ли обратный вызов для onFailure аргументы? Например, в jQuery есть 3 аргумента, которые могут дать вам информацию об ошибке. Я столкнулся с подобной проблемой, когда обратный вызов error продолжал вызываться, даже при отсутствии ошибки соединения. Проблема оказалась в плохо сформированном JSON. Можете ли вы подтвердить, что ваш JSON правильно сформирован?

UPDATE

Я только что проверил документацию для Request и заметил, что onFailure может иметь xhr в своей подписи. Попробуйте взглянуть на атрибуты status, statusText и responseText объекта XMLHttpRequest. Это даст вам ключ к пониманию того, что идет не так.

Попробуйте это:

onFailure: function(xhr) {
   console.log(xhr.status, xhr.statusText, xhr.responseText);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...