我希望从每个JavaScript的JsonRPC调用到PHP服务器的结果以供进一步使用(使用Chart.js绘制图表)。 为此我有一个函数应该进行调用并返回结果。 我使用这个jQuery插件:https://github.com/datagraph/jquery-jsonrpc
$.jsonRPC.setup({
endPoint: '/jsonserver.php'
});
var res; // first place
function getMyStuff() {
var res; // second place as alternative
$.jsonRPC.request('getResultsById', {
params: [1],
success: function(result) {
alert(JSON.stringify(result, null, 4)); // works well
res = result;
},
error: function(result) {
alert("error: " + JSON.stringify(result, null, 4));
}
});
return res;
}
我的问题是我不知道如何从成功阻止中获得结果。如果我调用该函数,我总是得到未定义。
答案 0 :(得分:0)
请求是异步处理的,因此您需要提供一个回调,因为您已经在成功'错误'块。可能最简单的方法就是提供另一个用结果调用的回调,如下所示:
$.jsonRPC.setup({
endPoint: '/jsonserver.php'
});
getMyStuff(function (result) {
console.log("here's the result", result);
});
function getMyStuff(callback) {
$.jsonRPC.request('getResultsById', {
params: [1],
success: callback,
error: function(result) {
console.error("error:", result);
}
});
}
答案 1 :(得分:0)
谢谢大家的提示 对于遇到同样问题的每个人 - 我的工作代码示例:
$.jsonRPC.setup({
endPoint: '/jsonserver.php'
});
drawMyChart(function (result) {
var ctx = document.getElementById("canvas").getContext("2d");
var lineChartData = {
labels: makeSuitableArrayLabel(result),
datasets : [
{
fillColor : "#F06292",
data: makeSuitableArrayFirst(result)
},
{
fillColor : "#1565C0",
data: makeSuitableArraySecond(result)
}
]
};
window.myLine = new Chart(ctx).Line(lineChartData, {
// options
});
});
function drawMyChart(callback) {
$.jsonRPC.request('getResultsById', {
params: [1],
success: callback,
error: function(result) {
console.error("error:", result);
}
});
}
// add
$("#add").click(function() {
myLine.addData([1, 2], "label");
});