2010-12-03 19 views
4

フォームに含まれるHTMLをサーバー側のスクリプトに送信して、データベースに保存できるようにしようとしています。私が送るのはクエリ文字列で、HTMLにカンマやアンパサンドのような文字が含まれるたびに、残りのHTMLはその時点で切り捨てられます。AJAXを介してサーバー側のPHPにHTMLを送信

ありがとうございます!

答えて

7

あなたが適切にURLエンコードする必要がありparameteres要求送信:

$.ajax({ 
    url: 'foo.php', 
    data: { html: '<html>You can use whatever characters you want here</html>' }, 
    type: 'GET', 
    success: function(result) { 

    } 
}); 

か:$.GET["html"]

$.ajax({ 
    url: 'foo.php', 
    data: { html: $('#someTextFieldWhichMightContainHtml').val() }, 
    type: 'GET', 
    success: function(result) { 

    } 
}); 

今、あなたは安全にあなたのPHPスクリプトでhtml変数を読み取ることができます。

私は今、あなたのコードは次のように見えることとします

$.ajax({ 
    url: 'foo.php?html=' + $('#someTextField').val(), 
    type: 'GET', 
    success: function(result) { 

    } 
}); 

私は、文字列の連結を使用しないように、あなたをお勧めしますし、常にdataハッシュを使用します。

+0

はhtmlとして保存されています。 – kobe

+0

@gov、no htmlは予約語ではありません。あなたは好きな名前を使うことができます。重要な部分は 'data'ハッシュを使うことです。 –

+0

私は常にクエリ文字列として渡します。なぜ私は上記のコードでハッシュを使用したのですか?私はちょうど学習目的を求めています。気にしないでください。 – kobe

0

Darin Dimitrovが言っているように、それはURLエンコードされる必要があります。私はこれらの関数を使用して、エンコードとデコードをjavascriptで行います。

function urlencode(str) { 
    return escape(str).replace(/\+/g,'%2B').replace(/%20/g, '+').replace(/\*/g, '%2A').replace(/\//g, '%2F').replace(/@/g, '%40'); 
} 

function urldecode(str) { 
    return unescape(str.replace(/\+/g, ' ')); 
} 

元はphpbuilderの投稿からです。

+1

うわー。醜い車輪reinvention。 https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/encodeURIComponent – Quentin

+0

[encodeURIComponent](https://developer.mozilla.org/ja/JavaScript/Reference/)がある場合に、なぜこのような関数を使用しますか? Global_Objects/encodeURIComponent)と[decodeURIComponent](https://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/decodeURIComponent)を参照してください。独自のエンコーディング関数をローリングすることはめったに良いことではありません。 –

+1

うわー、明らかに私のコードを更新する必要があります。通知をありがとう。 –

関連する問題