JQuery пост на PHP - PullRequest
       20

JQuery пост на PHP

0 голосов
/ 04 мая 2010

Почему я никогда не могу заставить сериализованный JQuery работать должным образом. Наверное, я что-то упустил.

Я могу сериализовать данные формы, и они отображаются в предупреждении:

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

Затем я публикую свою страницу PHP следующим образом:

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

  }
});

Но КОГДА (не в первый раз) я пытаюсь вставить / обновить данные в БД, я когда-либо получаю только 1 передаваемую переменную:

Вот мой PHP-скрипт:

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

данные, переданные только когда-либо, получают первую переменную. почему?

Я думаю, что это больше похоже на то, как я работаю с php, но это сводит меня с ума и всегда занимает слишком много времени, чтобы понять, где я иду не так.

Ответы [ 5 ]

0 голосов
/ 04 мая 2010

Я бы предложил вам ajaxForm / ajaxSubmit из http://jquery.malsup.com/form/ на стороне клиента.

0 голосов
/ 04 мая 2010

И если вам все еще нужно отправить все сериализованные данные, вы должны закодировать вашу строку с помощью функции escape(). Как это:

$j.ajax({
  data: "forminfo="+escape(forminfo),
  ...
});
0 голосов
/ 04 мая 2010

Вам нужно передать его немного по-другому, например:

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

В вашем php не используйте $_POST['forminfo'], а $_POST['nameOfTheInput']. Кроме того, вы должны санировать ввод, как это:

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

Это предотвращает атаки с использованием SQL-инъекций, , которые я предлагаю вам прочитать о :)

0 голосов
/ 04 мая 2010

Я полагаю, это потому, что вы помещаете всю сериализованную форму в переменную forminfo.

Это приведет к форме var, такой как forminfo=field1=val1&field2=val2 - так что все сводится к php как forminfo

Вам не нужно этого делать:

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

}
0 голосов
/ 04 мая 2010

В вашем php-скрипте это вверху:

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

Это должно помочь вам выяснить, что может пойти вам не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...