JQuery php göndermek

5 Cevap php

Neden JQuery düzgün çalışması için seri olsun asla olmasıdır. Ben bir şey eksik gerekir sanırım.

Ben bir form verilerini serialize ve bir uyarı gösterir:

var forminfo = $j('#frmuserinfo').serialize();
alert(forminfo);

Ben daha sonra bu nedenle benim PHP sayfasına göndermek:

$j.ajax({
  type: "POST", 
  url: "cv-user-process.php",
  data: "forminfo="+forminfo,
  cache: false, 
  complete: function(data) { 

  }
});

Ben eklemeye çalıştığınızda WHENEVER (değil ilk kez) ama / Ben sadece şimdiye kadar 1 varaible geçmiş olsun DB veri güncelleme:

İşte benim PHP komut dosyası:

$testit = mysql_query("UPDATE cv_usersmeta SET inputtest='".$_POST['forminfo']."' WHERE user='X'");

geçirilen veriler sadece şimdiye kadar ilk değişkeni alır. neden?

Ben daha ben php ile anlaşma yolu olduğunu düşünüyorum ama bu beni deli ediyor ve hep yanlış gidiyorum bulmak için çok uzun beni alır.

5 Cevap

Ben FormInfo değişken altında tüm tefrika formunu sararak çünkü bu olduğuna inanıyorum.

Böylece her şey FormInfo olarak php için geliyor - Bu gibi forminfo=field1=val1&field2=val2 bir formu var neden olacaktır

Bunu yapmak gerekmez:

$j.ajax({
type: "POST", 
url: "cv-user-process.php",
data: forminfo,
cache: false, 
complete: function(data) { 

}

Php komut dosyası üstünde bu var:

<?php
print_r($_POST);
exit;
?>

Bu senin için yanlış giden ne olabilir bulma konusunda size yardımcı olacaktır.

Böyle, o biraz farklı geçmek gerekir:

$j.ajax({
  type: "POST", 
  url: "cv-user-process.php",
  data: $j('#frmuserinfo').serialize(),
  cache: false, 
  complete: function(data) {    
  }
});

Lütfen php $_POST['forminfo'] ziyade $_POST['nameOfTheInput'] kullanmayın. Ayrıca, bu gibi girdileri olmalıdır:

$testit = mysql_query("UPDATE cv_usersmeta SET inputtest='".mysql_real_escape_string($_POST['nameOfTheInput'])."' WHERE user='X'");

Bu, SQL enjeksiyon saldırıları engeller which I suggest you read more about :)

Ben istemci tarafında http://jquery.malsup.com/form/ adlı ajaxForm / ajaxSubmit size öneririm.

Hala bütün serialized veri göndermek gerekiyorsa, sen escape() fonksiyonu ile dize kodlamak gerekir. Bu gibi:

$j.ajax({
  data: "forminfo="+escape(forminfo),
  ...
});