Проблема с PHP + Ajax + Sql - PullRequest
       1

Проблема с PHP + Ajax + Sql

1 голос
/ 25 июля 2011

Я уверен, что это простая проблема, я посмотрел на форумах, но не смог найти пример, относящийся к моей проблеме.

По сути, я отображаю таблицу hrefs, котораяу каждого есть вызов onclick () к методу ajax с использованием get и URL.

function createRequestObject(){
var req;

if(window.XMLHttpRequest){
    //For Firefox, Safari, Opera
    req = new XMLHttpRequest();
    }
else if(window.ActiveXObject){
    //For IE 5+
    req = new ActiveXObject("Microsoft.XMLHTTP");
}
else{
    //Error for an old browser
    alert("Your browser is not IE 5 or higher, or Firefox or Safari or Opera");
}
return req;
}


//Make the XMLHttpRequest Object
var http = createRequestObject();



function sendRequest(method, url){
if(method == "get" || method == "GET"){
    http.open(method,url,true);

    http.onreadystatechange = handleResponse;
    http.send(null);
}
}
function handleResponse(){
if(http.readyState == 4 && http.status == 200){
    var response = http.responseText;
    if(response){

        document.getElementById("DIVNAME").innerHTML = response;

    }
}
}

Вызов href выглядит следующим образом:

echo '<td><a href="#" onClick="sendRequest(\'get\', \''.$toPass.'\')"/>'.$variable.'</a></td>';

Переменная $toPass равна page.php?variable1='.$variable1.'&variable2='.$variable2.'&variable3=blah&action='.$option.'

Когда я передаю переменную 1, например:'TP111010114' работает нормально, _REQUEST ['variable1'];захватывает переменную и проталкивает ее через мой sql-запрос.

, если переменная содержит #, например: «Blah # 2», единственный фрагмент данных, который проходит, - это переменная 1 = «Blah» с оставшимисяпеременные не назначены.Из того, на что это похоже, ничего не получается после #.Я попытался кодировать URL-адрес в php, а затем удалить его в своем ajax.js, где вы вызываете window.open ('get', unescape (url), true);но у меня был тот же результат, он работал с любой переменной, не содержащей #.Когда я попытался закодировать его с помощью urlencode () и не расшифровал его в моем ajax.js, запрос не был выполнен.

Кодированный запрос выглядит так:

page.php%3Fvariable1%3DTP111010114%26variable2%3D64%26variable3%3Dnew%26Action%3DOthers

, если онне закодирован, это выглядит так:

page.php?variable1=TP111010114&variable2=64&variable3=new&Action=Others

Я использовал firebug для контроля переменных .js по мере их прохождения, и при кодировании выглядит так, как будто я должен получить правильную переменную, но это все еще толькозахватывает перед # в переменной

http://www.randomsite.ca/page.php?variable1=WF225+Amendment+#2&variable2=543&variable3=new&Action=Others

И все же этот запрос на стороне php по-прежнему получает $ variable = $ _REQUEST ['variable1'] $ variable = 'WF225 Amendment', а другие переменные не назначены.

Это должно быть как-то связано с тем, как что-то обрабатывает #, но я не вижу, чего мне здесь не хватает, если бы кто-то мог помочь, это было бы очень признательно.

Я переименовал информацию в целях конфиденциальности

Ответы [ 2 ]

2 голосов
/ 25 июля 2011

Вам нужно urlencode значения, которые вы вводите в URL, а не весь URL, включая имена переменных. Вы хотите закодировать "бла # 2", но не часть "& variable1 =". Пример:

$toPass = 'page.php?variable1=' . urlencode($variable1) . '&variable2=' . urlencode($variable2) ...etc

Вам не понадобится никакого декодирования на конце HTML / JS.

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

Я полагаю, что после # в качестве именованного якоря может быть что-то проанализировано, что, вероятно, будет игнорировать переменные после этой точки ... Вы пытались использовать метод, который не использует символ #? Или даже попробовать использовать POST в качестве метода AJAX?

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