2017-01-27 6 views
0

これは私を狂ってしまいます!AJAXは送信される文字列の内容を変更します

私はJSでこのようなものがあります:コンソールで

xmlhttp.open("POST", "/note.php", true); 
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8"); 
console.log(" >>>> " + note + " " + noteHTML); 
xmlhttp.send("what=edit&note=" + note + "&noteHTML=" + noteHTML + "&noteIdx=" + noteIdx); 

出力:

>>>> C++ C++ 

このコードは、私がより同じコンテンツを取得別名note.phpで、正しくて、テキストの大半を送信しますJS側のコンテンツですが、何らかの理由で文字列C++に非常に奇妙なことがあります。文字列であるnoteまたはnoteHTMLC++に設定されている場合、PHP側に到着するもの(note.php)はCで、C++ではありません!!これは私には意味をなさない。多分私が選んだエンコーディングに何か問題があります。私はhtmlplain/textを試しましたが、何らかの理由で私はPHP側で何も得られませんでしたので、私はこの方向をさらに検討することをあきらめました。どんな考え?ブラウザで

else if ($_POST['what'] == "edit") 
{ 
    printArray($_POST); 
} 

出力:

what => edit note => C noteHTML => C noteIdx => 17no 

WHY?あなたがこの(各要素に対してencodeURIComponent()を使用)のようにそれを変更する必要が

+1

'+'は特別なシンボルです。そして、あなたは 'encodeURI'を使用する必要があります –

+0

しかし、それはエンコーディング自体の世話をすることになっていますか? – user18490

+0

'+' repesentsはURLの中にあるので、 '?abc = a + b + c'は内容 'a b c'を持つ' $ _GET'フィールド 'abc'にあります。 – JustOnUnderMillions

答えて

0

xmlhttp.open("POST", "/note.php", true); 
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8"); 
console.log(" >>>> " + note + " " + noteHTML); 
xmlhttp.send("what=edit&note=" + encodeURIComponent(note) + "&noteHTML=" + encodeURIComponent(noteHTML) + "&noteIdx=" + encodeURIComponent(noteIdx)); 

https://stackoverflow.com/a/4276396/4916265

関連する問題