その関数の外側の getJSON コールバック関数内からデータを使用することを余儀なくされています。見てください:
$('#stars').raty({
score: function() {
var $value = 0;
var $id = <?=$id?>;
$.getJSON("getuserrating.php?id=" + $id, function(data) {
$.each(data, function(key, val) {
$value = val;
});
});
return $value;
},
});
これは私が試したものですが、失敗しました。$value はまだ 0 に設定されていますが、コールバック内では確実に実際の値に設定されています。AJAX リクエストは非同期で送信されるため、失敗する理由はわかっています。問題は、コールバック内ですべてを行う正しい方法が不可能であることです。ご覧のとおり、rate (プラグイン) セットアップ内で JSON オブジェクトを取得する必要があります。$.ajax() を使用してそれを同期に設定するだけですが、ドキュメントではこれを 1.8 で非推奨としてマークしています。将来非推奨になることがわかっているソリューションを導入したくありません。
これを行う方法はありますか?木を見て森を見ていないだけかもしれませんが、目の前に簡単な解決策があります。前もって感謝します :)