JS JQuery и AJAX проблема - PullRequest
       5

JS JQuery и AJAX проблема

2 голосов
/ 28 декабря 2010

Привет, у меня есть проблемы с некоторыми вещами

Вот код

function get_char_val(merk) {
 $.ajax({
  type: "POST",
  url: "char_info2.php",
  data: { name: merk },
  dataType: "html",
  success: function(data){return(data);}
});

}
alert(get_char_val("str"));

, когда выходит предупреждение, он выводит неопределенное, помогите быстро, я делаю это два дня xC

Ответы [ 5 ]

3 голосов
/ 28 декабря 2010

Ваш оператор return; вернет значение в anonymous function, который вы передаете в success handler. Вы не можете вернуть значение, подобное этому, вместо этого вам нужно вызвать другой обратный вызов.

function get_char_val(merk, cb) {
   $.ajax({
      type: "POST",
      url: "char_info2.php",
      data: { name: merk },
      dataType: "html",
      success: function(data){cb.apply(this, data);}
   });
}

get_char_val("str", function(data) {
    alert(data);
});
3 голосов
/ 28 декабря 2010

get_char_val ничего не возвращает.Обратный вызов success должен содержать alert(data) для возврата данных из AJAX.

$.ajax является асинхронным - это означает, что он не происходит в порядке с другим кодом, поэтому обратный вызов существует.

2 голосов
/ 28 декабря 2010

Вы можете установить параметр конфигурации async: false в опциях вызова ajax или использовать обратный вызов.

Использование Async: false -

    function get_char_val(merk)
    {  
      var returnValue = null;
        $.ajax
        (
            {   
                type: "POST",
                async:false,   
                url: "char_info2.php",   
                data: { name: merk },   
                dataType: "html",  
                success: function(data){returnValue = data;} 
            }
        ); 
     return returnValue;
    }
    alert(get_char_val("str")); 

P.S .: Обратите внимание, что синхронизация вызовов ajax не рекомендуется.

0 голосов
/ 28 декабря 2010

Это должно работать. Используйте это так.

function get_char_val(merk) {
var myReturnData= "";
 $.ajax({
  type: "POST",
  url: "char_info2.php",
  data: { name: merk },
  dataType: "html",
  success: function(data){myReturnData = data;}
});
return myReturnData;
}
alert(get_char_val("str"));

Просто поймите проблему с вашим фрагментом кода. Используйте оператор return под правой функцией.

0 голосов
/ 28 декабря 2010

Поскольку вы выполняете асинхронный вызов ajax, ответ сервера обрабатывается функцией «success». Возврат в вашей функции успеха бесполезен, вы должны использовать параметр «data» непосредственно в функции

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...