2010-11-04 8 views
1

Je passe des données de formulaire à php en utilisant le code jquery puis le code php enregistre les données dans la base de données mysql. Si le titre est "how to save & to mysql database using php", le titre sera stocké dans la base de données sous la forme "how to save". Comment puis-je réparer cela?Comment envoyer "&" comme paramètre de requête dans ajax

Voici mon code 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'); 
     }); 
    } 
    }); 

et code 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"; 

Répondre

7

Le & est un caractère spécial dans les URL. C'est le caractère séparateur de plusieurs paramètres. Vous devez soit URL encode la valeur de paramètre par vous-même encodeURIComponent()

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

ou pour fournir les paramètres comme un objet JS {} de sorte que jQuery va gérer lui-même.

var data = { 
    "title": title, 
    "url": url, 
    ... 
}; 
+0

merci BalusC, maintenant ça marche bien – FDI

+0

De rien. – BalusC

0

Vous devez encoder l'esperluette si c'est une donnée et non un délimiteur de segment.

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

$title = htmlentities($var); 

... 
?> 
Questions connexes