jQuery ajax-запрос с json-ответом, как?

Я отправляю запрос ajax с двумя значениями post, первый – это «действие», определяющее, какие действия должен выполнять мой php-скрипт, другой – «id», который является идентификатором пользователя, которому он должен разбирать скрипт.
Сервер возвращает 6 значений внутри массива () и затем закодирован в JSON с помощью функции PHP: json_encode();
Некоторые из моих ответов – HTML, но когда я кодирую его в JSON, он убегает "/" поэтому он становится "\/"
как я могу отключить это?

также, когда я не знаю, как отобразить это в jQuery, когда я получаю ответ сервера, я просто подумал, что все это в div будет просто отображать числа и коды HTML, которые я запросил, но он отображает массив, поскольку он закодированный в PHP.

PHP

 $response = array(); $response[] = "<a href=''>link</a>"; $response[] = 1; echo json_encode($response); 

JQuery:

 $.ajax({ type: "POST", dataType: "json", url: "main.php", data: "action=loadall&id=" + id, complete: function(data) { $('#main').html(data.responseText); } }); 

как я могу сделать это для работы JSON?

Вам нужно позвонить

 $.parseJSON(); 

Например:

 ... success: function(data){ var json = $.parseJSON(data); // create an object with the key of the array alert(json.html); // where html is the key of array that you want, $response['html'] = "<a>something..</a>"; }, error: function(data){ var json = $.parseJSON(data); alert(json.error); } ... 

см. это в http://api.jquery.com/jQuery.parseJSON/

если у вас все еще проблема слэш: поиск security.magicquotes.disabling.php или: function.stripslashes.php

Заметка:

Этот ответ здесь для тех, кто пытается использовать $.ajax с свойством dataType установленным в json и даже с неправильным типом ответа. Определение header('Content-type: application/json'); на сервере может исправить проблему, но если вы возвращаете text/html или любой другой тип, метод $.ajax должен преобразовать его в json . Я тестирую более старые версии jQuery и только после версии 1.4.4 силу $.ajax для преобразования любого типа dataType переданный тип dataType . Поэтому, если у вас есть эта проблема, попробуйте обновить версию jQuery.

Во-первых, это поможет, если вы установите заголовки вашего PHP для обслуживания JSON:

 header('Content-type: application/json'); 

Во-вторых, это поможет настроить ваш вызов ajax:

 $.ajax({ url: "main.php", type: "POST", dataType: "json", data: {"action": "loadall", "id": id}, success: function(data){ console.log(data); }, error: function(error){ console.log("Error:"); console.log(error); } }); 

В случае успеха ответ, который вы получаете, должен быть выбран как истинный JSON, и объект должен быть зарегистрирован на консоли.

ПРИМЕЧАНИЕ. Если вы хотите выбрать чистый html, вам может потребоваться использовать другой метод для JSON, но я лично рекомендую использовать JSON и рендеринг его в html с помощью шаблонов (таких как Handlebars js ).

Подключите контроллер javascript clientide и контроллер php-серверов, используя коды отправки и получения с привязанными данными. Таким образом, ваш php-код может отправлять в качестве ответной функциональной дельта для js recepient / listenener

см. https://github.com/ArtNazarov/LazyJs

Извините за мой плохой английский

Поскольку вы создаете разметку в виде строки, вы не конвертируете ее в json. Просто отправьте его, поскольку он объединяет все элементы массива с помощью метода implode . Попробуй это.

Изменение PHP

 $response = array(); $response[] = "<a href=''>link</a>"; $response[] = 1; echo implode("", $response);//<-----Combine array items into single string 

JS (Измените dataType от json до html или просто не устанавливайте его. JQuery выяснит это)

 $.ajax({ type: "POST", dataType: "html", url: "main.php", data: "action=loadall&id=" + id, success: function(response){ $('#main').html(response); } });