Проблема с поиском данных с помощью qu и jQuery - PullRequest
0 голосов
/ 04 августа 2011

Я строю форму, в которой есть поле ввода с упреждением (используя jQuery UI ).Выбранный вход (в данном случае полосы) отправляется в базу данных через Ajax, а затем отображается под полем ввода в поле Истец, Ответчик или Другой.

В 90% случаев это работаетпросто отлично, асинхронно великолепно.Проблема возникает, когда в группе есть цитаты или апостроф.Я экранирую символы с помощью mysql_real_escape_string в моем обработчике форм PHP, но проблема возникает из-за того, что данные перешли на Ajax.

description=Watts, Michael "5000" becomes description=Watts%2C+Michael+%225000%22.

Вот мой код jQuery (ничего сложного, простосериализация) и мой код PHP.Обратите внимание, что это прекрасно работает, если я вручную ввожу description=Watts, Michael "5000" в свой файл PHP (например, он может получить данные, которые он не может сделать иначе).

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'];
    }

ОБНОВЛЕНИЕ:

Вот часть json моего php

$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

1 Ответ

0 голосов
/ 04 августа 2011

Использование

$description=mysql_real_escape_string(urldecode($_POST['description']));

Теперь, когда видно, что вы пытаетесь вывести строку JSON, ответ будет другим.

для цикла:

for ($x = 0, $numrows = mysql_num_rows($query); $x < $numrows; $x++) {  
                $row = mysql_fetch_assoc($query);  
                $parties[$x] = array('description'=>addcslashes($row['description'],'"'),'partyId'=>$row['id'],'partyType'=>$row['partyType']);  
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...