2010-04-26 3 views
0

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

Я думал, что было бы просто просто использовать событие onClick, чтобы передать строку функции, которую я использовал для раскрывающегося списка, но я получаю предупреждение в событии JSON onFailure, даже если данные добавляются в MySQL. Я попытался удалить предупреждение из 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)".

ответ

0

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

UPDATE

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

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

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

Я думаю, ваше право - но я не получаю сообщение об ошибке с выпадающим списком ... и если я уйду из OnFailure все вместе я не добавляю данных на mySQL, извините, я не понимаю Mootools достаточно, чтобы проверить объект XMLHttpRequest. – Mikey1980

+0

, даже если у меня есть onFailure, сделайте что-нибудь, кроме предупреждения, это не добавит данных ... человек, я смущен. – Mikey1980

+1

Попробуйте изменить обработчик onFailure на то, что я показал выше в своем ответе. –