你好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”就是全部。输入字符串的所有其余部分都将丢失
答案 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();
这将为您序列化整个表单并创建整个数据字符串 - 它应该解决您的特殊字符问题,并使您的代码更容易阅读。