2011-07-25 19 views
1

私はそれが単なる問題であると確信しています。私はフォーラムを見てきましたが、私の問題に特有の例は見つかりませんでした。PHP + Ajax + Sqlの問題

基本的に私はajaxメソッドへのonclick()呼び出しを持つhrefsのテーブルを表示していますが、 'get'とurlを使用しています。 'TP111010114' は正常に動作し、_REQUEST [:$toPass変数はpage.php?variable1='.$variable1.'&variable2='.$variable2.'&variable3=blah&action='.$option.'

私は例えば、変数1を渡すときである

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

:ようhrefのための呼び出しが見え

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; 

    } 
} 
} 

'変数1'];変数を取得し、それを私のSQLリクエストを通してプッシュします。

変数は、例えば#が含まれている場合:「何とか#2」を介して取得したデータのみ片を残りの変数が割り当てられていないことと 変数1 =「何とか」です。 #の後には何も表示されません。 私はphpでurlをエンコードしようとしましたが、私のajax.jsでそれをアンエスケープしてwindow.open( 'get'、unescape(url)、true)を呼び出しました。しかし、私は同じ結果を持っていました。#を含まない変数で動作しました。私はそれを私のajax.jsでそれをデコードしないでurlencode()を使ってエンコードしようとしましたが、リクエストは通過していませんでした。

エンコードされた要求は、次のようになります。彼らは通過し、それはように見えるように私は、.jsファイル変数を監視するために放火犯を使用

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

:同じように見えるエンコードされていない場合

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

しかし、私はそれが適切な変数を取得する必要がありますそれをエンコードするときには、まだ変数の#の前につかむ

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

まだこのPHP側のリクエストは、$ variable = $ _REQUEST ['variable1'] $ variable = 'WF225 Amendment'となり、他の変数は割り当てられていません。

何かが#を処理する方法とは関係がありますが、誰かがそれを高く評価するのを助けることができれば、私はここで何が欠けているのかわかりません。私はプライバシーの目的のために情報の名前を変更した

答えて

2

あなたはURLではなく、変数名を含む全URLに入れている値をurlencodeする必要があります。 "blah#2"はエンコードしますが、 "& variable1 ="の部分はエンコードしません。例:

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

HTML/JSの最後にデコードする必要はありません。

+0

...また、OPは自分のAJAXハンドラをロールしないでくださいが、jqueryやmootoolsのようなものを使用してください。 –

+0

これは参考になるかもしれませんが、この変更を行う必要がある初期HTMLページを生成するPHPコードではこの問題は修正されませんでした。 –

+0

Danに感謝します。すぐに働き、知り合いになりました。 – Liam

-1

私は、このポイントの後に変数を無視する可能性が高い名前付きアンカーとして#の後に何かを解析するかもしれないと信じています...あなたは#文字に依存しない方法を使ってみましたか?あるいは、AJAXメソッドとしてPOSTを試してみてください。

+0

投稿を処理する新しいajax.jsオプションを作成しました。コードは次のとおり他 \t {\t \t方法= 'POST'。 \t \t http.open(method、unescape(url)、true); \t \t \t http.onreadystatechange = handleResponse; \t \t http.send(null);ポストの最初の変数で#が切断された後 \t \t \t} は、私はまだ、すべての同じ問題を得ました。 – Liam