2012-10-09 28 views
0

我想http://dev.joget.org/community/display/KB/JSON+API#JSONAPI-web%2Fjson%2Fworkflow%2Fprocess%2Flist失敗調用JSON網絡服務我的asp.net mvc的內部應用4

所以,請撥打以下Web服務作爲mentioend這個環節上我的asp.net mvc的觀點裏面我寫了folloiwng: -

<script type="text/javascript"> 
      $(document).ready(function() { 
       // Send an AJAX request 
       $.getJSON("http://localhost:8080/jw/web/json/workflow/process/list?j_username=kermit&hash=9449B5ABCFA9AFDA36B801351ED3DF66&loginAs=admin", 
       function (data) { 
        // On success, 'data' contains a list of products. 
        $.each(data, function (key, val) { 

         // Format the text to display. 
         var str = val.id + ': $' + val.packageName; 

         // Add a list item for the product. 
         $('<li/>', { text: str }) 
         .appendTo($('#products')); 
        }); 
       }); 
      }); 
</script> 
<h1>The Processes are</h1> 
<ul id="products"/> 

但是當我運行上述網頁沒有進程將根據<h1>The Processes are </h1>被顯示,而如果i型以下http://localhost:8080/jw/web/json/workflow/process/list?j_username=kermit&hash=9449B5ABCFA9AFDA36B801351ED3DF66&loginAs=admin&nbsp;直接在我的瀏覽器的地址欄上,然後顯示所有進程。那麼可能會出現什麼問題?

BR

- ::::修訂:::: - 我已經更新了我的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"} 

那麼,是什麼問題阻止我的代碼顯示正確的數據?

回答

1

嘗試指定JSONP callback參數作爲callback=?在查詢字符串的結尾,如文檔中解釋說:

var url = 'http://localhost:8080/jw/web/json/workflow/process/list?j_username=kermit&hash=9449B5ABCFA9AFDA36B801351ED3DF66&loginAs=admin&callback=?'; 
$.getJSON(url, function (data) { 
    // On success, 'data' contains a list of products. 
    $.each(data, function (key, val) { 
     // Format the text to display. 
     var str = val.id + ': $' + val.packageName; 
     // Add a list item for the product. 
     $('<li/>', { text: str }).appendTo('#products'); 
    }); 
}); 

UPDATE:

顯示您的JSON(最後)後,產品清單包含在data屬性中,因此您需要修改您的$.each並對此屬性進行操作,而不是直接對結果進行操作:

{ 
    "data": [ 
     { 
      "packageName": "CRM", 
      "packageI‌​d": "crm" 
     }, 
     { 
      "packageName": "EngineersAssociation", 
      "packageId": "EngineersAssociation" 
     }, 
     { 
      "packageName": "LeaveApp", 
      "packageId": "leaveApp" 
     }, 
     { 
      "packageName": "Newtest", 
      "packageId": "Newtest" 
     }, 
     { 
      "p‌​ackageName": "TestApp", 
      "packageId": "testapp" 
     }, 
     { 
      "packageName": "test54", 
      "packageId": "test5" 
     } 
    ] 
} 

所以調整代碼:

var url = 'http://localhost:8080/jw/web/json/workflow/process/list?j_username=kermit&hash=9449B5ABCFA9AFDA36B801351ED3DF66&loginAs=admin&callback=?'; 
$.getJSON(url, function (result) { 
    // On success, 'result.data' contains a list of products. 
    $.each(result.data, function (key, val) { 
     // Format the text to display. 
     var str = val.id + ': $' + val.packageName; 
     // Add a list item for the product. 
     $('<li/>', { text: str }).appendTo('#products'); 
    }); 
}); 
+0

感謝您的答覆;我試過你的代碼,但網頁將繼續加載沒有任何結果! –

+0

可能問題在於這兩個應用程序位於http:// localhost:2834 /上的不同端口上,而另一個位於http:// localhost:8080上?或者這不應該引起任何問題 –

+0

如果Web服務支持JSONP,這應該不是問題。 –

相關問題