Issue with PHP + Ajax + Sql

Issue with PHP + Ajax + Sql

本文关键字:Ajax Sql PHP with Issue      更新时间:2023-09-26

我确信这只是一个简单的问题,我在论坛上找过,但找不到一个特定于我的问题的例子。

基本上我正在显示一个表的href,其中每个有一个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 ',其余变量未赋值。从它看起来,它没有得到任何后面的#。我尝试在php中编码url,然后在我的ajax.js中不转义它,你调用窗口。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 ',其他变量未赋值

这一定是与某些东西处理#的方式有关,但我不知道我在这里错过了什么,如果有人能帮助它将不胜感激。

出于隐私考虑,我已经重命名了信息

您需要urlencode您放入URL的值,而不是整个URL,包括变量名称。您希望编码"blah #2"而不是"&variable1="部分。例:

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

不需要在HTML/JS端进行任何解码。

我相信它可能会将#之后的任何内容解析为命名锚,这可能会忽略此点之后的变量…您是否尝试过使用不依赖于#字符的方法?或者甚至尝试使用POST作为AJAX方法?