2016-07-13 15 views
0

JavaScriptからデータを取得しようとしています。私は生のXMLHttpRequestを使用しています。 それはうまく動作しますが、のリンクにonclickイベントを含むリンクを返すと、パーサーエラーが発生します。例えば:「php/javascript/HTMLパーサーで空白文字エラー

JavaScriptでは

echo "<a href='#' onclick=myfunction('$data')>$data</a><br>";

私は

xhr.onreadystatechange = function(){ 

if(xhr.readyState == 4 && xhr.status == 200){ 
        document.getElementById("some_id").innerHTML=xhr.responseText; 
} 

} 

を持っているが、Googleクロームコンソールは、要素のHTMLでこれを示し

をsome_id:PHPで

私が持っています

<a href="#" onclick="myfunction('John" Doe')>John Doe</a>

'John Doe'の代わりに'John" Doe'があります。 は、私はすなわち(名前間の空白は、このために責任があることを考え出してきていない空白が、結果はどのように私はそれを修正することができ'John Doe'

でしょう?(ジャバスクリプト内の二重引用符は、すなわちクリッククリックを閉じて

+0

私は質問を理解していますか、期待される結果は何ですか、そして現在のものは何ですか? – Epodax

+0

http://stackoverflow.com/questions/3752769/how-to-escape-double-quotes-in-title-attribute – epascarello

+1

@Epodax JavaScript内の二重引用符をクリックして閉じる... OPはどのようにするかを知りたい修理する。 – epascarello

答えて

-1

TRY)エラーをトリガです:json_encode()

まあ
echo "<a href='#' onclick=myfunction('".json_encode($data)."')>$data</a><br>"; 
+0

私が言ったように、JohnとDoeの間の**空白のスペースはパーサを混乱させるようです。 json_ecodeを使って私は 'John Doe' –

0

は、のはそれは次のようにレンダリングされるものを見てみましょう:

<a onclick=myfunction('John Doe')> 

属性onclickの値がmyfunction('JohnであるHTMLパーサーには、第2属性Doe')があります。

あなたはあまりにも有効なHTML構文確保する必要があります:実際に

<a onclick="myfunction('John Doe')"> 
     ^     ^

を、あなたは有効なJavaScript構文を確認し、[JavaScriptコードはHTML構文を破壊しないことを確認する必要があります

printf('<a onclick="%s">', htmlspecialchars(sprintf('myfunction(%s)', json_encode($data)))); 
+0

(私の見解では)難解な種類を得ます。あまりにも多くの質問をしなければ、私のコードにどのように適用されますか? –

+0

これはあなたのコードに非常に直接適用されます...!? PHPの 'echo'を' printf'のバージョンに置き換えて、あなたの問題を解決する有効な構文を生成していることを確認してください。 – deceze

+0

hmmだから、これは私が 'printf( ''、htmlspecialchars(sprintf( 'myfunction(%s)'、json_encode($ data)));)を書いたものですが、単一のエラーは発生しませんでした。ページに印刷されています。コードが実行されていないかのように空白になっています –

-1

ああ、はい。次にこれは正しいかもしれません

echo "<a href='#' onclick=\"myfunction('".urlencode($data)."')\" >$data</a> 
+0

JavaScriptの構文!= URLエンコーディング。間違った言語のエスケープ/エンコーディングのメカニズムが間違っています。 – deceze

+0

こんにちは! 2つの別々の回答を掲示するのではなく、最初のものを編集して新しい詳細を追加することができます。 – Epodax

+0

母はどのように知っていますか?**空白を+記号**に置き換えることで問題を解決しました。だから私は '' John + Doe''を手に入れました。それでも元のデータを変更しているので、私が探していたものではありません。仲間を助けてくれてありがとう。 –

関連する問題