JSON オブジェクトを返す Web サービスを呼び出したいのですが、Web サービスの仕様は次のリンクに記載されています。
http://dev.joget.org/community/display/KB/JSON+API#JSONAPI-web%2Fjson%2Fworkflow%2Fpackage%2Flist
次のように、asp.net mvc3 Web アプリケーション内に単純なビューがあります。
@{
ViewBag.Title = "Home Page";
}
<script src="@Url.Content("~/Scripts/f.js")" type="text/javascript"></script>
<h2>@ViewBag.Message</h2>
<p>
To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>.
</p>
<h1>The Processes are </h1>
<ul id="products"/>
次の f.js を使用して Web サービスを呼び出し、返された JSON データを表示します。
$(document).ready(function() {
$.ajax({
type: 'GET',
url: 'http://localhost:8080/jw/web/json/workflow/package/list?loginAs=admin',
dataType: 'json',
success: function(data) {
$.each(data, function(key, val) {
alert("jsonData");
// Format the text to display.
var str = val.packageId + ': $' + val.packageName;
// Add a list item for the product.
$('<li/>', {
text: str
}).appendTo($('#products'));
});
}
});
});
しかし、問題は、ビューに移動すると、AJAX 呼び出しの結果としてビューに何も表示されないことです。手動で URL を入力すると、'http://localhost:8080/jw/web/ json/workflow/package/list?loginAs=admin' をブラウザのアドレスバーに追加すると、ブラウザ内に結果が正常に表示されますか?
では、何がうまくいかないのでしょうか?
:::更新しました:::
JavaScript を次のように更新しました。
$(document).ready(function() {
$.ajax({
type: "GET",
url: "http://localhost:8080/jw/web/json/workflow/package/list?loginAs=admin",
dataType: "JSONP",
contentType: "application/json; charset=utf-8",
success: function(data) {
$.each(data, function(key, val) {
// Format the text to display.
var str = val.packageId + ': $ ' + val.packageName;
// Add a list item for the product.
$('<li/>', {
text: str
}).appendTo($('#products'));
});
}
});
});
ただし、Web サービス呼び出しの結果は次のように返されます。
- undefined: $ undefined
代わりに:
{"activityId":"","processId":"289_process1"}
では、私のコードが正しいデータを表示するのを妨げている問題は何でしょうか?