2013-02-20 2 views
-1

Я использую jQuery AJAX для загрузки части моей веб-страницы. И мой тип данных AJAX - это HTML. Я слышал, что JSON работает быстрее, и я тоже использовал его. Но JSON, кажется, не работает, когда данные немного большие, например:Есть ли функция Javascript, аналогичная функции JSON_DECODE от PHP?

Он работает, когда данные коротки:

{"name" : "John Smith" , "age" : "32" , "status" : "married" } 

{"name" : "Bella Gilbert" , "age" : "26" , "status" : "single" } 

Но не тогда, когда данные немного большие:

{"name" : "John Smith" , "age" : "32" , "status" : "married" } 

{"name" : "Bella Gilbert" , "age" : "26" , "status" : "single" } 

{"name" : "Joseph Morgan" , "age" : "28" , "status" : "single" } 

{"name" : "Paul Wesley" , "age" : "24" , "status" : "single" } 

есть ли способ, я могу просто получать данные без указания DATATYPE в формате JSON, а затем декодировать его с помощью JavaScript, аналогично функции РНР:

json_decode ($ data);

Или если нет, то предложите способ обработки больших данных JSON с помощью jQuery AJAX. Благодаря!

+3

Размер не является проблемой, ваш JSON недействителен, вы не можете просто конкатенировать несколько таких объектов. –

+0

Мне интересно, почему этот DV? Это плохая практика? –

ответ

9

использование этого

var obj = jQuery.parseJSON(json_data); 

Это будет декодировать json_data

http://api.jquery.com/jQuery.parseJSON/

+0

Будет ли он декодировать JSON или закодировать его? Не могли бы вы описать немного или показать пример? Благодарю. –

+0

@RehanAdil Он будет декодировать данные. См. Отредактированный ответ. –

5

Можно использовать метод $.parseJSON() для разбора JSON-кодированные строки в соответствующий объект JavaScript. Но если вы выполняете запрос AJAX на сервер и данные поступают от него вы не должны использовать этот метод на всех, потому что JQuery будет автоматически анализировать результат передается функции успеха:

$.ajax({ 
    url: '/somescript.php', 
    dataType: 'json', 
    success: function(result) { 
     // result is already a parsed javascript object that you could manipulate directly here 
    } 
}); 

И если вы правильно напишете свой скрипт на стороне сервера, чтобы он установил ответ HTTP-заголовка Content-Type на application/json (который всегда должен делать так или иначе), вам даже не нужно указывать параметр jQuery dataType. JQuery будет анализировать этот заголовок ответа и автоматически анализировать результат для вас:

$.ajax({ 
    url: '/somescript.php', 
    success: function(result) { 
     // result is already a parsed javascript object that you could manipulate directly here 
    } 
}); 
+0

Но, как я уже сказал, $.ajax ({dataType: 'json'}) не возвращает большие данные JSON. –

+2

Что вы подразумеваете под большими данными JSON? Не могли бы вы показать пример? Нет ничего, что помешало бы методу $ .ajax для получения больших данных. Но будьте осторожны, данные должны быть действительными JSON, иначе jQuery будет вызывать ошибку, которая не может ее проанализировать. Ваш сервер отправляет действительный JSON? Например, то, что вы показали в своем вопросе, недействительно JSON. Вы не можете просто конкатенировать такие сегменты. Если вы хотите отправить массив объектов, вы должны использовать '[' и ']': '[{" name ":" John Smith "," age ":" 32 "," status ":" married "}, { «name»: «Bella Gilbert», «age»: «26», «status»: «single»}] '. –

+0

Я использую это на стороне сервера: [ ] Должен ли я сделать это вручную? –

8

JSON.parse() использовать для преобразования строки JSON в объект:

var jsontext = '{"firstname":"Jesper","surname":"Aaberg","phone":["555-0100","555-0120"]}'; 
var contact = JSON.parse(jsontext); 
document.write(contact.surname + ", " + contact.firstname); 

// Output: Aaberg, Jesper 

Jquery версии: (Parses a JSON string.)

var obj = jQuery.parseJSON('{"name":"John"}'); 
alert(obj.name); 
0

Ваш объект JSON имеет неверный формат. Должно выглядеть так:

[{"name" : "John Smith" , "age" : "32" , "status" : "married" }, 

{"name" : "Bella Gilbert" , "age" : "26" , "status" : "single" }, 

{"name" : "Joseph Morgan" , "age" : "28" , "status" : "single" }, 

{"name" : "Paul Wesley" , "age" : "24" , "status" : "single" }] 

Используйте this инструмент для проверки вашего объекта.

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