我注意到产品 API 中似乎有什么错误。问题如下:- 1. 如果返回的 JSON 包含多个进程(在我的情况下为两个进程),则 JSON 结果将如下所示:-
{"total":2,"data":[{"id":"leaveApp#2#leaveApplicationProcess","packageName":"Leave App","name":"Leave Application Process","packageId":"leaveApp","label":"Leave Application Process ver 2","version":"2"},{"id":"leaveApp#2#process1","packageName":"Leave App","name":"Leave Application Process2","packageId":"leaveApp","label":"Leave Application Process2 ver 2","version":"2"}]}
并且我能够使用以下 javaScript 显示这两个进程:-
$(document).ready(function () {
$.ajax({
type: "GET",
url: "http://localhost:8080/jw/web/json/workflow/process/list?j_username=kermit&hash=9449B5ABCFA9AFDA36B801351ED3DF66&loginAs=admin&packageId=leaveApp",
dataType: "JSONP",
success: function (result) {
$.each(result.data, function (key, val) {
var str = val.name + ' | Version ' + val.version;
$('<li/>', { text: str })
.appendTo($('#products'));
}); }
}); });
虽然如果 packageid 只包含一个进程,那么上面的 Java 脚本将返回"undefined"
JSON,因为我认为因为没有数据属性并且返回的 JSON 格式如下:-
{"total":1,"data":{"id":"crm#1#process1","packageName":"CRM","name":"Proposal Approval Process","packageId":"crm","label":"Proposal Approval Process ver 1","version":"1"}}.
那么,任何人都可以帮助我如何让我的 javascruipt 工作,而不管进程数量如何,或者这是 API 本身的问题?
此致
更新
I modify my JavaScript to be as follow:-
$.ajax({
type: "GET",
// url: "http://localhost:8080/jw/web/json/workflow/process/list?j_username=kermit&hash=9449B5ABCFA9AFDA36B801351ED3DF66&loginAs=admin&packageId=" + 'name',
url: fullurl,
dataType: "JSONP",
// contentType: "application/json; charset=utf-8",
success: function (result) {
var arr = ( (typeof(result.data) == 'object') &&
(result.data.constructor.name == 'Array') )
? result.data
: [result.data];
$.each(arr, function (key, val) {
// Format the text to display.
// var str = val.packageName + ' | ' + val.packageId;
var str = val.name + ' | Version ' + val.version;
// Add a list item for the product.
$('<li/>', { text: str })
.appendTo($('#products'));
});
}
});
但是目前如果有多个 JSON 对象,它将返回“未定义”,而如果只有一个 JSOn 对象,那么它将正常工作......所以我原来的问题现在是 Vice Versa 。