2012-10-18 5 views
6

次のjQueryのclick()関数は、フォームデータをajax経由でデータベースに送信する必要があります。ajax jQueryリクエストの最大データ長はありますか

$("#maandbutton").live('click', function(event) { 
    $.get("ajax.php",{"action":"addm","maandtekst":$('#maandtekstinput').val(),"maand":$('#maandselect').val(),"bovenonder":$('#bovenonder').val()},function(msg){ 
     $("#maandtable").append($('<tr><td class="left">' + $('#maandtekstinput').val() + '</td><td class="right">' + $('#bovenonder').val() + '</td><td class="right">' + $('#maandselect').val() + '</td><td class="icon"></td></tr>')); 
     $('table.zebra tr').removeClass('odd'); 
     $('table.zebra tr:odd').addClass('odd'); 
     $('#maandtekstinput').val(''); 
     $('#maandselect').val(''); 
     $('#bovenonder').val(''); 
     $("#maandbutton").button({ disabled: true }); 
    }) 
}); 

問題は、テキストエリア#maandtekstinputがある場合はそれに多くのテキストに、唯一の追記が動作しているが、データは私のSQLデータベースに到達していないということです。

My ajax.phpスクリプトには簡単なswitch文があります。

$maandtekst = htmlspecialchars($_GET['maandtekst']); 

switch($_GET['action']) 
{ 
    case 'addm': 
     $query = "INSERT INTO `site_maandteksten` (`id`, `maand`, `bovenonder`, `tekst`) VALUES (NULL, '".$maand."', '".$bovenonder."', '".htmlspecialchars_decode($maandtekst)."')"; 
     $result = mysql_query($query) or die(mysql_error()); 
     break; 
} 

なぜ私のスクリプトがテキストエリアのテキストをデータベースに配信しないのだろうと思います。 私のデータベースでは、5000文字のスペースを持つ長いテキストフィールドです

答えて

3

大きなデータにはGETクエリを使用しないでください:POSTを使用してください。

$.post("ajax.php",{"action":"addm","maandtekst":$('#maandtekstinput').val(),"maand":$('#maandselect').val(),"bovenonder":$('#bovenonder').val()},function(msg){ 

(およびPHPで$_POST又は$_REQUESTを使用)

GETクエリに関する問題は(この制限は、ブラウザとサーバに依存する)のパラメータのサイズが制限されているURLに埋め込まれていることです。

+1

アハハ。これは私に1時間のデバッグを必要としました。 ご協力ありがとうございます:) – user1755868

+0

[URLの最大長はどうですか?](http://stackoverflow.com/q/417142/1338846)を参照してください。 –

関連する問題