2012-01-23 5 views
1

Я не понимаю, как функция успеха работает в вызове $ .ajax с jquery.

, например

$.ajax({ 
    type: "POST", 
    url: "ajax.php", 
    data: "function=1", 
    success: function(data,response,jqxhr){ 
     useReturnData(data /* ??? not sure how to use the data var */); 
    } 
}; 

ajax.php:

<?php 
     if ($_REQUEST['function'] == '1'){ 
      $string = "this is the data i want to return and use"; 
     } 
?> 

как я использовать эти данные в рамках функции успеха? Нет, где, кажется, объясняется, что такое параметр данных, они просто используют его неоднозначно.

другой вопрос, это данные: «функция = 1», связанная с данными как параметр для функции успеха?

ответ

2

data переменная содержит вывод файла PHP, так что если в вашем файле PHP вы делаете:

echo "<p>success</p>"; 

data будет содержать <p>success</p>.

В вашем примере вы изменили ваш файл РНР: (? Дел)

<?php 
     if ($_REQUEST['function'] == '1'){ 
      $string = "this is the data i want to return and use"; 
     } 

     // other stuff... 

     echo $string; 
?> 
2

Содержание параметра data зависит от типа ответа. Если Content-Type - application/json, тогда он анализируется как JSON. Если это text/html или аналогичный, содержимое HTML. В вашем случае, похоже, вы возвращаете текст. Если вы сделаете свой Content-Type заголовок text/plain или аналогичный, то data должен быть просто строкой.

Чтобы ответить на ваш второй вопрос, свойство data для запроса Ajax - это нечто иное; он указывает запрос , который отправляется. Другими словами, это строка запроса, если у вас есть запрос GET и переменные «form», если это запрос POST.

+0

Это даже лучше ... – jeroen

1

data является то, что возвращается в сценарии на стороне сервера, так что в этом случае было бы

this is the data i want to return and use 

Обеспечение условие if() выполнено.

Никто не говорит, что содержит data, потому что он может содержать разные вещи, хотя это всегда строка. Иногда это HTML, иногда это JSON, а иногда просто обратное сообщение.

В вашем случае data будет просто строкой , предоставляющей вам эхо строку в скрипте на стороне сервера.

0

Самый простой способ, чтобы загрузить данные в какой-то шаблонного элемента Е.Г.

$.ajax({ 
    type: "POST", 
    url: "ajax.php", 
    data: "function=1", 
    success: function(data,response,jqxhr){ 
     $('div.selector').load(data); 
    } 
}; 
+0

Либо вы дали URL к [ '.load()'] (http://api.jquery.com/load/) напрямую (без .ajax() вызова необходимо тогда) или использовать '.html()' или так для инъекций. Кажется, это путаница. – mario

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