2013-06-28 1 views
0

я использовал AJAX вызов в пользовательской функции проверки jQgrid,jQgrid: Пользовательская функция Ajax не работает

это моя функция

function customFuction(value1, colname) { 
    var result = null; 
    $.ajax({ 
     url: "../ajax/check_269.php", 
     type: "POST", 
     data: { 
      val: value1, 
      col: colname, 
      parentId: row_id 
     }, 
     dataType: "html", 
     async: false, 
     success: function (data) { 
      if (data == "error") { 
       result[false, value1 + "no se permite"]; 
      } else { 
       result[true, value1 + "Success"]; 
      } 
     }, 
     error: function() { 
      alert('Error trying to validate car '); 
     } 
    }); 
    return result; 
}  

он дает мне ошибку, как это

TypeError: result is null 
+0

Какой будет имя метода в check_269.php? –

+0

простой запрос в check_269.php на основе данных, отправленных этим ajax – Napster

+1

ajax is asynchronus ... ваш результат будет возвращен при выполнении вызова ajax и не дожидается завершения функции ajax .. – bipen

ответ

0

Прежде всего переменная successне изменена внутри success callback. Вы должны изменить линию

result[true, value1 + "Success"]; 

в

result = [true, value1 + "Success"]; 

и изменить строку result[false, value1 + "no se permite"]; таким же образом.

Основная проблема заключается в том, что не нужна никакая функция проверки на стороне сервера. Если данные будут сохранены, сервер должен выполнить проверку входных данных. Если данные неверны, сервер должен возвращать некоторое описание ошибки и некоторый код ошибки HTTP. Например, если вы используете редактирование формы, вы можете указать обратный вызов errorTextFormat для декодирования ответа сервера в случае ошибки. По умолчанию jqGrid будет интерпретировать тело ответа сервера ошибок как фрагмент HTML, который будет отображаться на сервере.

+0

Спасибо! вы решили мой второй вопрос на сегодня .... – Napster

+0

@NisargPatel: Добро пожаловать! – Oleg

0

Аякс asynchronus .. причина вы получаете нулевой, потому что bythetime Ajax вызов завершен функция возвращает результат как нуль и не ждать вызова Ajax для завершения ..

один путь вокруг чтобы вернуть результат в функцию обратного вызова успеха ajax, чтобы убедиться, что вызов ajax завершен.

function customFuction(value1, colname) { 
var result = null; 
$.ajax({ 
    url: "../ajax/check_269.php", 
    type: "POST", 
    data: { 
     val: value1, 
     col: colname, 
     parentId: row_id 
    }, 
    dataType: "html", 
    async: false, 
    success: function (data) { 
     if (data == "error") { 
      result = [false, value1 + "no se permite"]; 
     } else { 
      result = [true, value1 + "Success"]; 
     } 
     return result; 
    }, 
    error: function() { 
     alert('Error trying to validate car '); 
    } 
}); 

}  

и я предполагаю, что вы пропустили = установить массив результатов.

 Смежные вопросы

  • Нет связанных вопросов^_^