jQuery .getJSON против .post какой из них быстрее? - PullRequest
3 голосов
/ 23 августа 2011

Использование

$.getJSON();

или

 $.post();

Я пытаюсь отправить некоторые параметры через страницу, которая только для запроса AJAX и получить некоторые результаты в JSON или HTML-фрагмент.

Что я хочу знать, это то, что быстрее?

Предположим, что HTML-файл будет простым логическим текстом (true или false)

Ответы [ 6 ]

6 голосов
/ 23 августа 2011

Как говорили другие, между этими двумя функциями нет реальной разницы, поскольку обе они будут отправлены XMLHttpRequest.

Если сервер обрабатывает оба запроса стот же код, тогда время обработки должно быть одинаковым.

Поэтому можно перевести вопрос, на какой из них быстрее HTTP-запрос GET или запрос POST?

Поскольку запрос POST требует двухдополнительные заголовки HTTP (Content-Type и Content-Length) по сравнению с запросом GET, последний должен быть быстрее (поскольку будет передаваться меньше данных).

Но это только скорость, я думаю, что лучше следовать REST рекомендации здесь.Используйте POST, если вы изменяете что-то, используйте GET, если хотите что-то получить.

И еще одна важная вещь: ответы GET могут быть кэшированы, но у меня были проблемы с кэшированием ответов POST .

3 голосов
/ 23 августа 2011

Если это HTTP-действие, которое извлекает данные с сервера без сохранения (обновления) чего-либо, GET является правильной семантикой для использования.

Отправляйте и получайте HTTP, так что разница в производительности будет незначительной, особенно с учетом переменных связи по глобальной сети.

3 голосов
/ 23 августа 2011

Я не думаю, что это будет иметь значение, поскольку оба используют ajax, .post загружает данные, используя запрос http post, где getJSON использует запрос http get, более того, вам не нужно явно указывать getJSON dataType

2 голосов
/ 17 мая 2013

Это старый, но ...

Мы все должны помнить о: CSRF / XSRF.

Если вы сделаете это так:

$.ajax({
    type: "POST", 
    dataType: "json",
    url: url, 
    data: {
    token : 'pass-some-security-token-here'
    },
    cache: false,
    success: function(data) {
    //do your stuff here
    }
});

выможет получить его тогда вот так, обнуляя большинство CSRF / XSRF

if (isset($_POST['token'])) { //you can also test token further
    //do your stuff her and send back result
} else {
    //error: sorry, invalid, or no security token
}

Во многих случаях GET - это приглашение для плохих парней, так как getJSON использует HTTP-запрос GET.

2 голосов
/ 23 августа 2011

Оба метода являются обертками / сокращениями для jQuery.ajax , поэтому разница в производительности не будет.

1 голос
/ 23 августа 2011

$.getJSON(); это ярлык для $.ajax();, который также вызывает $.post();, поэтому вы не увидите большой разницы (но будет проще использовать $.getJSON() напрямую).

См. Документ jquery

[ПРАВИТЬ] НимЧимпски был быстрее меня ...

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