Php AJAX JQuery不更新跨文本
我使用的是星级脚本,脚本正确地更新我的数据库,但返回的文本在我的跨度(avgrat和totalrat)没有更新。两个span标记之间的变量应使用返回值进行更新 返回值:Php AJAX JQuery不更新跨文本,php,jquery,ajax,Php,Jquery,Ajax,我使用的是星级脚本,脚本正确地更新我的数据库,但返回的文本在我的跨度(avgrat和totalrat)没有更新。两个span标记之间的变量应使用返回值进行更新 返回值: echo json_encode($ratingRow); HTML <div class="col-sm-3"> <?php echo form_open('http://localhost/mysite/rating/rate'); ?> <input name="rating" va
echo json_encode($ratingRow);
HTML
<div class="col-sm-3">
<?php echo form_open('http://localhost/mysite/rating/rate'); ?>
<input name="rating" value="<?php echo $ratingRow['stars']; ?>" id="rating_star" type="hidden" postID="<?php echo $nsid; ?>" />
<div class="overall-rating">
Overall Rating of <span id="avgrat"><?php echo $ratingRow['average_rating']; ?></span> Based on <span id="totalrat"><?php echo $ratingRow['rating_number'] ?></span> votes.
</div>
<?php echo form_close(); ?>
</div>
根据投票结果。
脚本
<script type="text/javascript">
$(function() {
$("#rating_star").codexworld_rating_widget({
starLength: '5',
initialValue: $('#rating_star').val(),
callbackFunctionName: 'processRating',
imageDirectory: '<?php echo base_url(); ?>i/icon',
inputAttr: 'postID'
});
});
function processRating(val, attrVal){
$.ajax({
type: 'POST',
url: '<?php echo base_url(); ?>rating/rate',
data: {'<?php echo $this->security->get_csrf_token_name(); ?>' : '<?php echo $this->security->get_csrf_hash(); ?>', "postID":attrVal, "ratingPoints":val},
dataType: 'json',
success : function(data) {
if (data.status == 'ok') {
$("span#avgrat").text($(this).data("average_rating"));
$("span#totalrat").text($(this).data("rating_number"));
}else{
alert('Some problem occured, please try again.');
}
}
});
}
</script>
$(函数(){
$(“#评级明星”).codexworld_评级小部件({
星长:'5',
初始值:$(“#额定值_星”).val(),
callbackFunctionName:'processRating',
imageDirectory:'i/图标',
InputTR:“posted”
});
});
函数processRating(val,attrVal){
$.ajax({
键入:“POST”,
url:“评级/费率”,
数据:{'':'',postID:attrVal,“ratingPoints:val},
数据类型:“json”,
成功:功能(数据){
如果(data.status=='ok'){
$($span#avgrat”).text($(this).data(“平均评级”);
$($span#totalrat”).text($(this).data(“评级编号”);
}否则{
警报('出现问题,请重试');
}
}
});
}
更改这些:
$("span#avgrat").text($(this).data("average_rating"));
$("span#totalrat").text($(this).data("rating_number"));
对这些:
data = JSON.parse(data);
$("span#avgrat").text(data[0]["average_rating"]);
$("span#totalrat").text(data[0]["rating_number"]);
您不能在那里使用此。此处的此
指的是成功
功能。您必须首先使用JSON.parse(data)
解析数据。因此它从一个字符串变成了一个JavaScript对象这是可选的,因为您已经使用了数据类型:“json”
现在它应该可以按预期为您工作
数据
是一个对象,而不是一个函数。您使用了数据(“评级编号”)
,应该是数据[0][“评级编号”]
等等。请检查更新的答案。我根据您的建议更新了脚本Praveen,但我在Firebug debugger中收到以下错误。“SyntaxError:JSON.parse:JSON数据第1行第2列的意外字符--data=JSON.parse(data);”Firebug中的箭头指向data.Er中的“d”。。。删除整行并自己键入。看起来有一些编码问题@里塞布。。。否则,请删除该行本身。我删除并手动键入了,同样的错误。错误可能是指返回的数据吗?这是返回的数据。“{”0:{”评级数“:”1“,”平均评级“:”2.0“}”,状态“:”ok“}”@ReeseB实际上我正要问你这个问题。data
对我来说似乎没问题。@ReeseB删除data=JSON.parse(data)代码>行,并根据更新方式更改其他行。