【发布时间】:2015-09-08 18:26:36
【问题描述】:
我正在尝试使用this 评分插件,但我无法在点击时设置新分数。
我正在对点击事件发出 ajax 请求并获得新的计算分数。我想在点击事件中设置新分数。正确的做法是什么?
<div class="rating" data-id="some-int" data-score="0.5"></div>
Javascript:
$(".rating").raty({
score: function () { return $(this).attr("data-score"); },
click: function (score, evt) {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "./ajax.asmx/RateImage",
data: "{ ImgId: " + $(this).attr("data-id") + ", Score: " + score + "}",
dataType: "json",
async: false,
success: function (result) { actionResult = result.d; }
});
if (actionResult.Success) {
console.log("Score: " + actionResult.Message);
score = actionResult.Message;
} else { // cancel rating
alert(actionResult.Message);
return false;
}
}
});
【问题讨论】:
-
为什么要同步 (
async: false)?为什么不是异步调用?像这样:jsfiddle.net/8kcu8qsr/2 -
你看到我链接的小提琴了吗?
-
@abhitalks 我不太了解异步的详细信息。如果设置为 true,则 actionResult 未定义。所以即使结果没有完成,ajax 块之后的代码也会继续运行。这不是我想要的。
-
要了解更多关于 AJAX、Async 以及如何使用返回值的信息,请参阅这个规范的 QA:stackoverflow.com/q/14220321/1355315
-
很高兴知道。谢谢你。我会修复我的代码块。
标签: javascript jquery raty