先読み入力ボックス(jQuery UIを使用)を持つフォームを作成しています。選択された入力(この場合はバンド)は、Ajaxを介してデータベースに送信され、原告、被告、またはその他のビンの入力ボックスの下に表示されます。quとjQueryでのデータ取得の問題
ケースの90%は、うまく動作し、非同期的に輝かしいです。この問題は、バンドに引用符やアポストロフィがあると発生します。 PHPフォームハンドラでmysql_real_escape_string
という文字をエスケープしていますが、データがAjaxの終了時に発生しているようです。
description=Watts, Michael "5000" becomes description=Watts%2C+Michael+%225000%22.
は、ここに私のjQueryのコード(空想何も、単にシリアライズ)と私のPHPコードです。 PHPファイルに手動でdescription=Watts, Michael "5000"
と入力すれば正常に動作することに注意してください(そうでなければできないデータを取得することができます)。
のjQueryコード:
$('#party_add').live('click', function(){
//grab the form
var thisform=$(this).parents('form');
//serialize the data
var toSend=thisform.serialize();
//add the caseID we stored in #caseId
var storedCaseId=$('#caseId').text();
toSend=toSend+'&caseId='+storedCaseId;
$.ajax({
type : "POST",
url : 'cases_form_handler.php',
data : toSend,
dataType:'json',
success : function(data){
alert(toSend);
//conjure the relevant parties into their respective places in the table below with some sexy json action
$('.party').empty();
for(var x=0; x < data.length; x++){
if(data[x].partyType==1){
$('.party:first').append('<span class=party_addition id='+data[x].partyId+'>'+data[x].description+'</span><br/>');
}else{
//if defendant, put them in the defendant box
if(data[x].partyType==2){
$('.party:first').next('.party').append('<span class=party_addition id='+data[x].partyId+'>'+data[x].description+'</span><br/>');
}else{
//if other, put them in the other box
if(data[x].partyType==3){
$('.party:first').next('.party').next('.party').append('<span class=party_addition id='+data[x].partyId+'>'+data[x].description+'</span><br/>');
}
}
}
}
}
});
PHPコードと失敗SQLの呼び出し:
$description=mysql_real_escape_string($_POST['description']);
$sql="SELECT id FROM varParties WHERE description='$description'";
$result=mysql_query($sql);
while($row=mysql_fetch_assoc($result)){
$partyId=$row['id'];
}
UPDATE:
ここに私のPHPのJSON部分が
$sql = "SELECT varParties.*,relCasesParties.partyType,relCasesParties.active FROM varParties INNER JOIN relCasesParties ON relCasesParties.partyId = varParties.id WHERE relCasesParties.caseId = '$caseId' AND relCasesParties.active='1'";
//build array of results
$query=mysql_query($sql);
for ($x = 0, $numrows = mysql_num_rows($query); $x < $numrows; $x++) {
$row = mysql_fetch_assoc($query);
$parties[$x] = array('description'=>$row['description'],'partyId'=>$row['id'],'partyType'=>$row['partyType']);
}
//send it back
echo json_encode($parties);
です
htmlentitiesはどこで使用しますか?
うーん。データを適切に整理するのはすばらしいことでしたが、何らかの理由でそれを見つけて後で箱に入れることができませんでした。彼らは0のidを持っていると言っている。私の引用符/一重引用符は物事を乱している?私がPHPファイルから直接実行するたびに、正しく戻り値を返すことができるようです... – samuel
** htmlentities()**をPHPの出力文字列に適用します – avetarman
私はまだコードを更新できませんそれは働いていて、htmlentititesをどこで叩くべきかを知るのに苦労しています。 – samuel