簡體   English   中英

將 JSON 從一個 asp.net web 應用程序發送到另一個

[英]Sending JSON from one asp.net web application to another

我的解決方案包含兩個 asp.net MVC 項目。 一個是網絡服務,另一個是普通網站,從前面提到的網絡服務中獲取數據。

我的網絡服務主控制器中有以下方法:

...
public JSONResult GetTeacher(){
   return JSON(new {TeacherName = this.teacher.name });
}

我正在嘗試使用此 $.ajax 方法從其他 Web 應用程序(將成為網站)訪問此方法:

$.ajax({
    type: 'GET',
    url: 'localhost:11370/Home/GetTeacher',
    contentType: 'application/json; charset=utf-8',
    success: function (response) {
        alert(JSON.stringify(response));
        $('#results').html('Welcome, ' + response.Name);
    },
    error: function (error) {
        alert(JSON.stringify(error));
    }
});

當我開始調試我的解決方案時,它打開了兩個 Web 開發服務器,都在不同的端口上。 結果,當 $.ajax 調用發生時,我會收到一個包含以下信息的彈出窗口:

the page at localhost:11510 says:
"readystate":0, "responsetext": "" , "status":0, "statustext":"error"

當我嘗試直接在 google chrome 控制台中運行腳本時,我收到以下消息:

XMLHttpRequest cannot load http://localhost:11370/Home/GetTeacher. 
Origin http://localhost:11510 is not allowed by Access-Control-Allow-Origin.

任何有關如何使用 $.ajax 實際訪問該方法的幫助將不勝感激。

編輯:我還嘗試制作一個簡單的 html 文件,看看如果我調用 web 服務會發生什么。 結果一樣。 此外,當我只輸入方法的 url 時,它工作正常並顯示老師的名字。

由於瀏覽器內置的same origin policy restriction ,您無法發送跨域 AJAX 請求。 一種可能的解決方法是使用CORS但由於並非所有瀏覽器都支持它,如果您想要跨瀏覽器解決方案,您可以考慮使用JSONP

您可以查看我編寫的this custom JsonpResult來說明如何使用來自不同域的控制器操作。 需要注意的是,jQuery 的 JSONP 實現僅適用於 GET 請求。 您不能跨域 POST 到控制器操作。 如果您需要這樣做,實現此目的的唯一可靠方法是在主域上編寫服務器端腳本,該腳本將充當兩個域之間的橋梁。 然后,您將 AJAX 請求發送到這個新腳本,該腳本將請求委托給遠程域並返回結果。

暫無
暫無

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

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