Ajax запросы POST с JQuery не делает urlencode '+'

У меня есть много данных JSON, которые я должен передать запросу:

$.ajax({
                type: "POST",
                url: "http://"+HOST+"/users/rankings",
                data: "friends="+JSON.stringify(friendsArr),
                success: function(response){
                    $("#rankings").html(response);
                }
            });

friendsArr является массивом объектов в формате JSON. Проблема - то, что некоторые объекты имеют данные с "+", и это не становится закодированным правильно. Это существует стороны сервера как, "" и данные испорчены. Я должен действительно выполнить итерации через все данные и закодировать каждое значение отдельно? Должен быть более легкий путь.

5
задан Tony 29 December 2009 в 16:36
поделиться

3 ответа

Я бы попробовал его, используя $.post метод против сырого $.ajax, и пусть jQuery обрабатывает работу за вас:

$.post( "http://"+HOST+"/users/rankings",
    { friends: JSON.stringify(friendsArr) },
    function(data){
        $("#rankings").html(response);
  }
);

Кроме того, так как вы можете только POST через AJAX для адресов на том же домене, почему бы просто не использовать "/пользователи/ранкинги" в качестве вашего URL против URL. "http://"+HOST+"/users/rankings"

4
ответ дан 14 December 2019 в 01:09
поделиться

Вы должны быть в состоянии использовать функцию javascript escape для исправления этой проблемы. Просто экранируйте ваши данные и URL перед отправкой.

.
4
ответ дан 14 December 2019 в 01:09
поделиться

Разве это не так просто, как:

$.ajax({
     type: "POST",
    url: "http://"+HOST+"/users/rankings",
    data: "friends="+escape(JSON.stringify(friendsArr)),
    success: function(response){
        $("#rankings").html(response);
    }
});
1
ответ дан 14 December 2019 в 01:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: