2012-02-16 72 views
0

你好o有一個html表單和一個php腳本,並且html在php腳本中傳遞了一些表單的值。那麼這裏是jQuery代碼php jquery和奇怪的字符

<script type="text/javascript"> 
     $(document).ready(function() { 

      $('#convert').click(function(){ 

       //pairno tis times ap tin forma 
       var name = $('#name').val(); 
       var tel = $('#tel').val(); 
       var tel2 = $('#tel2').val(); 
       var street = $('#street').val(); 
       var minconsum = $('#minconsum').val(); 
       var closedtill = $('#closedtill').val(); 
       var opentill = $('#opentill').val(); 
       var city = $('#city').val(); 
       var type = $('#type').val(); 

       if($('#city').val()=='ΑΤΤΙΚΗ') 
       { 
        var perioxi = $('#perioxiAtt').val(); 
       }else if($('#city').val()=='ΚΥΠΡΟΣ') 
       { 
        var perioxi = $('#perioxiKypr').val(); 
       }else if($('#city').val()=='ΘΕΣΣΑΛΟΝΙΚΗ') 
       { 
        var perioxi = $('#perioxiThess').val(); 
       }else{ 
        var perioxi = $('#perioxiGen').val(); 
       } 

       var dataString = "name=" + name + "&tel=" + tel + "&tel2=" + tel2 + "&street=" + street + "&minconsum=" + minconsum + "&closedtill=" + closedtill + "&opentill=" + opentill + "&city=" + city + "&perioxi=" + perioxi + "&type=" + type; 


       $.ajax({ 
       type: "POST", 
       url: "ajax_converter.php", 
       data: dataString, 
       success: function(data){ 
       //pairno ta dedomena 
       $('#results').show(); 

       //vazo ta dedomena sto results div tag. 
       $('#results').html(data); 
      } 
     }); 

和我得到的日期在我的PHP腳本像往常一樣

$name = $_POST['name']; 
$tel = $_POST['tel']; 
$tel2 = $_POST['tel2']; 
$street = $_POST['street']; 
$minconsum = $_POST['minconsum']; 
$closedtill = $_POST['closedtill']; 
$opentill = $_POST['opentill']; 
$city = $_POST['city']; 
$perioxi = $_POST['perioxi']; 
$type = $_POST['type']; 

一切工作正常,除了怪charachters &,<,>等所以這是我的問題!

任何幫助將是真正有用的!

,這裏是我的html形式,至少它的一部分在那裏我有

<label for="name">Όνομα:</label> 
<input type="text" name="name" id="name" value="" /> 

我忘了說我的輸出,如果我不帶引號我得到進入像「ZO & ZA」的名稱問題「動物園「就是這樣。輸入字符串的所有其餘丟失

+0

你不會想到要服務你只想要什麼坐在你最喜愛的餐廳街對面的圖書桌旁。請在您的問題中添加更多細節;你列出的字符對你的代碼有什麼作用?你得到了什麼輸出,你想要什麼輸出? – Bojangles 2012-02-16 00:20:29

+0

是啊對不起,我忘了提及我的輸出,如果我輸入一個名字,如「zo&za」沒有引號,我得到「zo」就是這一切。所有輸入字符串的其餘部分丟失 – 2012-02-16 00:28:20

回答

2

爲了便於閱讀,我將定義如下所示的Ajax參數,並讓jQuery將它轉換爲查詢字符串,供您正確編碼。 IT建設人工會導致一些問題,如果你在例如其中一個變量有一個「&」字符(克里斯托弗·埃利亞鬆的回答可以這樣做太):

$.ajax({ 
    type: "POST", 
    url: "ajax_converter.php", 
    data: { 
     "name": name, 
     "tel": tel, 
     "tel2": tel2, 
     "street": street, 
     "minconsum": minconsum, 
     "closedtill": closedtill, 
     "opentill": opentill, 
     "city": city, 
     "perioxi": perioxi, 
     "type": type 
    }, 
    success: function(data){ 
     //pairno ta dedomena 
     $('#results').show(); 

     //vazo ta dedomena sto results div tag. 
     $('#results').html(data); 
    } 
}); 
+0

解決我的問題非常感謝!序列化沒有奏效... – 2012-02-16 00:52:08

1

我甚至不知道我理解的問題,但我的猜測是,這個問題可能是這一行:由於您使用.html()取決於

var name = $('#name').html(); 

什麼元素類型#name是你可能得到HTML作爲你的名字(你的「特殊字符<>」)。如果它是輸入元素,則使用var name = $('#name').val();來獲取該值。

編輯

所以我會看到你的問題是什麼,現在,問題的關鍵在於正確創建數據串?那是你遇到特殊字符問題的地方嗎?

而不是做它的方式:

var dataString = "name=" + name + "&tel=" + tel + "&tel2=" + tel2 + "&street=" + street + "&minconsum=" + minconsum + "&closedtill=" + closedtill + "&opentill=" + opentill + "&city=" + city + "&perioxi=" + perioxi + "&type=" + type; 

您可以使用jQuery的.serialize()的,做這樣說:

var dataString = $("#yourFormId").serialize(); 

這將序列化整個窗體爲您和創建整個數據字符串 - 它應該照顧你的問題與特殊字符,並會讓你的代碼更容易閱讀。

+0

是的,我試過,也沒有運氣,所以! – 2012-02-16 00:23:06

+0

@MpampinosHolmens根據JamWaffles的評論,在這種情況下,我認爲你需要澄清一下你的問題。你的特殊字符有什麼問題? – 2012-02-16 00:25:11

+0

好的,我編輯了我的帖子 – 2012-02-16 00:25:38