我想通过AJAX发布这些变量:
<div class="vIn" id="star">
<div id="inner">
<span id="1" class="disabled"></span>
<span id="2" class="disabled"></span>
<span id="3" class="disabled"></span>
<span id="4" class="disabled"></span>
<span id="5" class="disabled"></span>
<input type="hidden" id="<?php echo $_GET['cID']?>" />
</div>
</div>
使用此脚本:
$(document).ready(function(){
$('#inner span').click(function(){
$(this).prevAll().andSelf().addClass('enabled');
var a = $(this).attr("id");
var cID = $("#inner input").attr("id");
$.ajax({
type: "POST",
url: "ajax/rating.php",
data: "value=+a+&cID=+cID+",
success: function(msg){
alert(data);
}
});
});});
在点击事件中,没有提醒。我在$ .ajax中使用了正确的数据吗? 提前谢谢。
答案 0 :(得分:8)
我强烈建议允许jQuery担心正确编码字符串:
var a = $(this).attr("id");
var cID = $("#inner input").attr("id");
$.ajax({
type: "POST",
url: "ajax/rating.php",
data: {value: a, cID: cID}, // <== change is here
success: function(msg){
alert(msg);
}
});
请注意,我将data
作为对象传递给$.ajax
,而不是字符串。 jQuery会为你正确编码。有关详细信息,请参阅the docs。
如果你真的想要自己编码,你必须明确地做:
data: "value=" + encodeURIComponent(a) + "&cID=" + encodeURIComponent(cID)
另请注意,我正在警告msg
,而不是data
,因为这就是您称之为success
的响应参数。
答案 1 :(得分:2)
这里有一个微妙的错误......
success: function(msg){
alert(data);
}
您可以像这样修复它......
success: function(data){
alert(data);
}
这里还有另一个错误......
data: "value=+a+&cID=+cID+",
我认为这应该是......
data: "value=" + a + "&cID=" + cID,
如果您仍未收到提醒,请大声喊叫!
答案 2 :(得分:0)
我不是Javascript专家,但不应该是data: "value="+a+"&cID="+cID
?
答案 3 :(得分:0)
data: "value=+a+&cID=+cID+"
试图连接值而不用处理具有特殊含义的字符。例如,URL可能包含&
个字符。
这就是它正在尝试做的事情,它实际上正在做的是将字符串文字设置为值。包含变量的尝试只是使它们成为字符串数据。
你应该:
data: { "value": a, "cID": cID }
答案 4 :(得分:0)
使用$ .ajax
时会出现一些问题data: "value=+a+&cID=+cID+",
'+'是连接运算符,你在这里做的是使用你之前设置的变量构建数据字符串。因此,您需要使用字符串“value =”等来连接变量。
例如
data: "value="+a+"&cID="+cID,