Как отправить строку с & в нем в качестве значения строки запроса? - PullRequest
1 голос
/ 18 июля 2011

Как я могу отправить строку со знаком & в ней (например, google & facebook) в качестве значения строки запроса?Теперь

var strUrl="ajaxpage.aspx?subject=my subject line &cmnt=google & facebook";
strUrl = encodeURI(strUrl);

$.ajax({ url: strUrl, success: function (data) {
     alert(data)
     }
 });

Теперь, когда я читаю строку запроса «cmnt», я получаю только «google», потому что это ломает &

Какой обходной путь для этого?Спасибо

Ответы [ 4 ]

5 голосов
/ 18 июля 2011

Вам нужно будет закодировать этот символ или весь URL


& будет закодировано как %26

var strUrl="ajaxpage.aspx?subject=my subject line &cmnt=google %26 facebook";

или звоните encodeURIComponent()

var strUrl = "ajaxpage.aspx" 
    + "?subject=" + encodeURIComponent("my subject line")
    + "&cmnt=" + encodeURIComponent("google & facebook");
3 голосов
/ 18 июля 2011

Краткий ответ: используйте encodeURIComponent для строк данных, прежде чем вставлять их в строки запроса.

Чуть более длинный ответ: вы используете jQuery.Это исправит это для вас, если вы позволите.Пусть URL-адрес будет просто URL-адресом основного ресурса, затем передайте все необходимые данные в строке запроса, используя свойство data объекта, который вы передаете методу ajax.

$.ajax({ 
    url: "ajaxpage.aspx", 
    data: { 
        subject: "my subject line",
        cmnt: "google & facebook"
    },
    success: function (data) {
        alert(data)
    }
 });
0 голосов
/ 18 июля 2011

Вы можете URL закодировать его как% 26.Будет ли это работать для того, что вам нужно сделать?

0 голосов
/ 18 июля 2011

Попробуйте использовать escape (см. Почему) encodeURIComponent в Google и facebook и добавьте в строку запроса.

Но я бы порекомендовал @Исправление jQuery Квентина!

...