Как отправить «&» в качестве параметра запроса в ajax - PullRequest
1 голос
/ 04 ноября 2010

Я передаю данные формы в php с помощью кода jquery, затем код php сохраняет данные в базе данных mysql. Если заголовок "how to save & to mysql database using php", то заголовок будет сохранен в базе данных как "how to save". Как я могу это исправить?

Вот мой код JS

    var dataString = 'title='+ title + '&url=' + url + '&description=' + description + '&published=' + published+ '&catid=' + catid;

  //alert (dataString);return false;

  $.ajax({
    type: "POST",
    url: "process.php",
    data: dataString,
    success: function() {
      $(".button").hide();
      $('#messages').html("<div id='message'></div>");
      $('#message').html("<h2>weblink Form Submitted!</h2>")
      .hide()
      .fadeIn(1500, function() {
        $('#message');
      });
    }
  });

и php код

    <?php
$con = mysql_connect("localhost","db","pass");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("dalanrep_dalanreportcom", $con);

    $title        = mb_convert_encoding(trim($_POST['title']),'HTML-ENTITIES', 'UTF-8');
    $url          = mb_convert_encoding(trim($_POST['url']),'HTML-ENTITIES', 'UTF-8');
    $description  = mb_convert_encoding(trim($_POST['description']),'HTML-ENTITIES', 'UTF-8');
    $published    = mb_convert_encoding(trim($_POST['published']),'HTML-ENTITIES', 'UTF-8');
    $catid        = mb_convert_encoding(trim($_POST['catid']),'HTML-ENTITIES', 'UTF-8');

    $title =mysql_escape_string($title );
    $url = mysql_escape_string($url );
    $description = mysql_escape_string($description );
$sql="INSERT INTO table (title, url, description,catid)
VALUES ('$title','$url','$description','$catid')";



if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "1 record added";

Ответы [ 2 ]

7 голосов
/ 04 ноября 2010

& - это специальный символ в URL.Это символ-разделитель для нескольких параметров.Вам необходимо либо URL-кодировать значение параметра самостоятельно с помощью encodeURIComponent()

var dataString = 'title' + encodeURIComponent(title) + '&url=' + encodeURIComponent(url) ... ;

или для предоставления параметров в виде JSобъект {}, так что jQuery будет обрабатывать его сам.

var data = {
    "title": title, 
    "url": url,
    ...
};
0 голосов
/ 04 ноября 2010

Вам необходимо закодировать амперсанд, если это данные, а не разделитель сегментов.

<?php
$var = "some title with an & in it";

$title = htmlentities($var);

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