簡體   English   中英

如何處理來自Ajax調用的json響應

[英]How to process json response from ajax call

我的網絡服務返回一個JSON對象,如下所示

["abc","xyz","option_3"]

即當我把這個地址放在Chrome瀏覽器中http://localhost:8088/rest/getOptions我會得到上面的提示。

我正在嘗試在瀏覽器中閱讀此內容,以便創建一個下拉選項...但是我從下面的代碼開始一無所獲:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
    <script type="text/javascript">
        url="http://localhost:8088/rest/getOptions";
        var ajaxResult = null;
        function getData(yt_url){
            $.ajax
            ({
                type: "GET",
                url: yt_url,
                dataType:"json",
                async: false,
                success: function(response){
                    ajaxResult = response;
                }
            });
        }
        getData(url);

    alert(ajaxResult);

    </script>
</head>
<body>
</body>
</html>

我總是在警報框中得到null 我用fiddler2再次檢查了Web服務請求/響應是否正常,我什至可以攔截Web服務和瀏覽器之間的json對象。

我也試過

var obj = JSON.parse(ajaxResult);
alert(obj);

我又得到了空。

我已經看過Ajax要求的json響應和類似的問題。 請查看我的JSON有點不同,因此這些解決方案不適用於我的情況,或者我沒有遵循它們。

我是AJAX和Java腳本的新手,請告知。

編輯:添加提供此rest / getOptions端點的JERSEY Web服務代碼

@GET
@Path("getOptions")
@Produces(MediaType.APPLICATION_JSON)
public List<String> getOptionsJson() {
    //build alloptions List<String>
    return alloptions ;
}

更新

您編輯了問題; 您不能使用dataType: 'json'因為跨域問題只能通過使用同一域上的代理或通過CORS來解決

當使用dataType: 'jsonp' ,不能使用async: false ; 這是因為它實際上並不使用XMLHttpRequest而是使用<script>標記使其跨域執行。 我相信jQuery只會忽略async設置而不會發出警告。

因此, alert()始終為空,您應將其移至成功回調中。

為了支持JSONP,您的Web服務必須將返回的數據包裝到由callback GET參數標識的函數調用中,例如

callback([1, 2, 3])

如前所述,如果您的Web服務不支持此功能,則需要使用CORS ,例如添加以下響應標頭:

Access-Control-Allow-Origin: *

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM