2010-11-04 112 views
1

我使用jQuery代碼將表單數據傳遞給php,然後php代碼將數據保存到mysql數據庫中。如果標題爲"how to save & to mysql database using php",那麼標題將作爲"how to save"存儲在數據庫中。我怎樣才能解決這個問題?如何在ajax中發送「&」作爲請求參數

這裏是我的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"; 

回答

7

&是URL的一個特殊字符。它是多個參數的分隔符。您需要要麼 URL編碼參數值自己被encodeURIComponent()

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

作爲JS對象{}讓jQuery將處理它本身提供的參數。

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

謝謝BalusC,現在工作正常 – FDI 2010-11-04 14:48:02

+0

不客氣。 – BalusC 2010-11-04 21:05:54

0

如果數據不是分隔符,則需要對連字符進行編碼。

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

$title = htmlentities($var); 

... 
?>