Отправка URL с несколькими переменными в качестве параметра на другую страницу - PullRequest
1 голос
/ 16 сентября 2011

У меня есть страница Javascript, которая отправляет данные на страницу PHP. Эти данные - это URL с разными строками запроса, например:

    var localURL = "http://localhost/app/proxy.php?data=http://myserver.com/game.php?type=loadgame&userInfoName=AA&userPwd=AA&nocache=0.8046834595784704"

    $.ajax({
        url: localURL,
        beforeSend: function (xhr) {
            alert('beforesend');
        },
        success: function (data) {
            alert('success: ' + data);
        }
    });

Количество переменных строки запроса может варьироваться, поэтому я не могу отправить его с параметром данных функции ajax. Если я сделаю GET переменной данных ($ _GET ['data'];), я получу такой результат:

http://myserver.com//game.php?type=loadgame

и я хотел бы получить:

http://myserver.com/game.php?type=loadgame&userInfoName=AA&userPwd=AA&nocache=0.8046834595784704

Есть идеи? : -S

Ответы [ 5 ]

3 голосов
/ 16 сентября 2011

Вам нужно сбежать, чтобы получить действительный URL:

var data = escape('http://myserver.com/game.php?type=loadgame&userInfoName=AA&userPwd=AA&nocache=0.8046834595784704');
var localURL = "http://localhost/app/proxy.php?data=" . data;
1 голос
/ 16 сентября 2011

Что вам не хватает, так это URL, экранирующий в localUrl varaible.

Должно быть так:

var localURL = "http://localhost/app/proxy.php?data=http%3A%2F%2Fmyserver.com%2Fgame.php%3Ftype%3Dloadgame%26userInfoName%3DAA%26userPwd%3DAA%26nocache%3D0.8046834595784704"

, если вы создаете localURL в javascript, используйте escape()функция

0 голосов
/ 16 сентября 2011

Вам необходимо кодировать зарезервированные символы. jQuery может сделать это автоматически, если вы реструктурируете так:

var localURL = "http://localhost/app/proxy.php";
var getString = "http://myserver.com/game.php?type=loadgame&userInfoName=AA&userPwd=AA&nocache=0.8046834595784704";

$.ajax({
    type: 'GET',
    data: { data: getString },
    url: localURL,
    beforeSend: function (xhr) {
        alert('beforesend');
    },
    success: function (data) {
        alert('success: ' + data);
    }
});

Будет запрашивать:

http://localhost/app/proxy.php?data=http%3A%2F%2Fmyserver.com%2Fgame.php%3Ftype%3Dloadgame%26userInfoName%3DAA%26userPwd%3DAA%26nocache%3D0.8046834595784704

0 голосов
/ 16 сентября 2011

Вот что видит браузер:

http://localhost/app/proxy.php?

data=http://myserver.com/game.php?type=loadgame => param 1

&userInfoName=AA => param 2

&userPwd=AA => param 3

&nocache=0.8046834595784704 => param 4

поэтому вы должны экранировать строку "http://myserver.com/game.php?type=loadgame&userInfoName=AA&userPwd=AA&nocache=0.8046834595784704" вот так

var data=$.URLEncode('http://myserver.com/game.php?type=loadgame&userInfoName=AA&userPwd=AA&nocache=0.8046834595784704')
0 голосов
/ 16 сентября 2011
var localURL = "http://localhost/app/proxy.php?data=" + encodeURIComponent("http://myserver.com/game.php?type=loadgame&userInfoName=AA&userPwd=AA&nocache=0.8046834595784704");
...