3

重複の可能性:
PHP 文字列を Javascript 変数に渡す (および改行をエスケープする)

したがって、基本的に、PHP ページから文字列を javascript 関数の引数として渡そうとしています。PHP はスクリプトがあるページに含まれていますが、それらは 2 つの別個のファイルにあります。

ただし、文字列を渡そうとすると、javascript の実行が停止します。PHP 整数を渡すことはできますが、文字列を渡すことはできません。これを修正することは可能ですか?エラーの原因をインターネットで調べましたが、何も見つかりません。どんな助けでも大歓迎です。

これは PHP と HTML です。送信がクリックされると、関数が実行されます。

$comment = "7b";
echo"
    <table>
         <p><input type='text' id='newPostComment' value='' placeholder='WRITE YOUR COMMENT HERE...' size='35'/><input type='submit' value='UPLOAD' onclick='uploadPostComment($parentID, $comment);fetchComment()'/></p>
    </table>

これがJavaScript関数です。

function uploadPostComment(PostCID, Comment){

      var PostCommentData = "fsPostID="+PostCID;
      PostCommentData += "&fsPostComment="+Comment;

      var xmlHttp = new XMLHttpRequest();
      xmlHttp.open("post", "uploadPostComment.php", true);

      xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      xmlHttp.setRequestHeader("Content-length", PostCommentData.length);
      xmlHttp.setRequestHeader("Connection", "close");

      xmlHttp.onreadystatechange = function()
         {
             if(xmlHttp.readyState == 4)
             {
                if(xmlHttp.status == 200)
                {
                    alert("Message Posted");
                }
                else
                {
                    alert("Oh no, an error occured2"); 
                }
             }
         };
         xmlHttp.send(PostCommentData);}
4

3 に答える 3

3
echo"
    <table>
         <p><input type='text' id='newPostComment' value='' placeholder='WRITE YOUR COMMENT HERE...' size='35'/><input type='submit' value='UPLOAD' onclick='uploadPostComment(\"$parentID\", \"" . str_replace('"', '\"', $comment) . "\");fetchComment()'/></p>
    </table>

フィールドを引用する必要があります。フィールドが整数の場合は引用符で囲む必要はありませんが、文字列の場合は引用符で囲む必要があります。parentID が文字列 ID なのか数値 ID なのかわからないため、両方を引用しました。もちろん、アプリケーションが必要とすることを行います。

更新: コメントに引用符が含まれている場合の破損に関するマイケルのコメントに関して。これを防ぐために、$comment 内のすべての二重引用符をエスケープします。

于 2012-12-16T20:50:12.133 に答える
1
<input type='submit' value='UPLOAD' onclick='uploadPostComment($parentID, $comment);fetchComment()'/>

特にあなたの犯人ですuploadPostComment($parentID, $comment);- $comment が文字列の場合、引用符を配置する必要があります:uploadPostComment($parentID, \"$comment\");

于 2012-12-16T20:50:43.817 に答える
0

文字列をエスケープされた二重引用符で囲みます\"$comment\"

$comment = "7b";
echo"
    <table>
         <p><input type='text' id='newPostComment' value='' placeholder='WRITE YOUR COMMENT HERE...' size='35'/><input type='submit' value='UPLOAD' onclick='uploadPostComment(\"$parentID\", \"$comment\");fetchComment()'/></p>
    </table>
于 2012-12-16T20:50:43.520 に答える