2013-06-16 3 views
1

У меня есть эта функция для размещения сериализованных данных в сценарии вставки. С последней версией JQuery она больше не работает. Какая часть в Js является проблемой?Публикация сериализованных данных с последней версией jquery

<div id="addCommentContainer"> 
    <form id="addCommentForm" method="post" action=""> 
      <textarea name="msg" id="msg" cols="82" title="Your comment" rows="2">Your comment...</textarea><br /> 
      <input type="text" name="author" title="name" value="Mark" id="author" /><br /> 
      <div id="personal"> 
      <input type="text" name="city" id="city" title="city (optional)" value="" /><br /> 
      <input type="text" name="email" id="email" title="e-mail (optional)" value="" /><br /> 
      <input type="text" name="url" id="url" title="website (optional)" value="" /> 
      <input type="hidden" id="cam_id" class="hd" name="cam_id" value="125879" /> 
      </div> 
      <input type="submit" id="submit" value="Comment" /> 
    </form> 
</div> 

$("#addCommentForm").submit(function(a){ 
     a.preventDefault(); 
     if(working) return false; 
     working=true; 
     $("#submit").val("Working..");$("span.error").remove(); 
     $.post("/comment/insert.php",$(this).serialize(),function(a){ 
      $loading.show();working=false;$("#submit").val("Submit"); 
      if(a.status){ 
       $(a.html).hide().insertBefore("#addCommentContainer").slideDown(); 
       $("#msg").val("") 
      } 
      else{ 
       $.each(a.errors,function(a,b){$("label[for="+a+"]").append('<span class="error">'+b+"</span>")}) 
      } 
     },"json") 
}); 




public static function validate(&$arr) 
    { 

     $errors = array(); 
     $data = array(); 

     if(!($data['email'] = filter_input(INPUT_POST,'email',FILTER_VALIDATE_EMAIL))) 
     { 

     } 

     if(!($data['url'] = filter_input(INPUT_POST,'url',FILTER_VALIDATE_URL))) 
     { 
      $url = ''; 
     } 

     if(!($data['msg'] = filter_input(INPUT_POST,'msg',FILTER_CALLBACK,array('options'=>'Comment::validate_text')))) 
     { 
      $errors['msg'] = 'Please enter a comment.'; 
     } 

     if(!($data['cam_id'] = filter_input(INPUT_POST,'cam_id',FILTER_CALLBACK,array('options'=>'Comment::validate_text')))) 
     { 

     } 

     if(!($data['city'] = filter_input(INPUT_POST,'city',FILTER_CALLBACK,array('options'=>'Comment::validate_text')))) 
     { 

     } 

     if(!($data['author'] = filter_input(INPUT_POST,'author',FILTER_CALLBACK,array('options'=>'Comment::validate_text')))) 
     { 
      $errors['author'] = 'Please enter a name.'; 
     } 

     if(!empty($errors)){ 
      $arr = $errors; 
      return false; 
     } 

     foreach($data as $k=>$v){ 
      $arr[$k] = mysql_real_escape_string($v); 
     } 

     $arr['email'] = strtolower(trim($arr['email'])); 
     return true; 
    } 

    private static function validate_text($str) 
    { 

     if(mb_strlen($str,'utf8')<1) 
     // return false; 

     $str = nl2br(htmlspecialchars($str)); 
     $str = str_replace(array(chr(10),chr(13)),'',$str); 

     return $str; 
    } 
} 


$arr = array(); 
$validates = Comment::validate($arr); 
+1

Вы слышали о непечатаемых? – Andreas

+1

Вы должны были опубликовать не-obfudcated версию вашего кода здесь. –

+0

Как насчет 'console.log ($ (this) .serialize())' перед отправкой сообщения? –

ответ

0

Вы должны использовать

$('#addCommentForm').serialize() 

вместо

$(this).serialize(); 

Обновлено

КОНСОЛЬ serialized data перед переходом к post method в js.

Также зарегистрируйтесь php page. То, что вы получили в POST data, Используя

print_r($_POST); 
+0

Почему? Разве это не '$ ('# addCommentForm')' и '$ (this)' - тот же самый объект в скрипте? Или это требование jQuery? –

+0

Это не имеет значения здесь ... – mark

+0

Это часть сериализации, которая является частью проблемы, на которую он должен ответить: json_encode (array ('status' => 1, 'html' => $ вставленComment-> markup())); – mark

Смежные вопросы