php jquery和奇怪的人物

时间:2012-02-16 00:16:14

标签: php jquery html

你好o有一个html表单和一个PHP脚本和html传递一些值在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'];

一切正常,除了奇怪的字谜&amp;,&lt;,&gt;等等,这是我的问题!

任何帮助都会非常有帮助!

这是我的html表单至少是我遇到问题的一部分

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

如果我输入“zo&amp; za”之类的名称而没有引号,我忘了提及我的输出我得到“zo”就是全部。输入字符串的所有其余部分都将丢失

2 个答案:

答案 0 :(得分:2)

为了便于阅读,我将定义下面的Ajax参数,让jQuery将其转换为查询字符串,以便您正确编码。手动构建它会导致问题,如果你有'&amp;'例如,其中一个变量中的字符(Christofer Eliasson的回答也可能这样做):

$.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);
    }
});

答案 1 :(得分:1)

我甚至不确定我理解这个问题,但我的猜测是问题可能就是这一行:

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

由于您使用.html()取决于元素类型#name,因此您可能会将HTML作为您的名称(您的“特殊字符&lt;&gt;”)。如果它是input-element,请使用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();

这将为您序列化整个表单并创建整个数据字符串 - 它应该解决您的特殊字符问题,并使您的代码更容易阅读。