3

webapi サーバーからデータを取得しようとしています。ショーのデバッグ

GET http://localhost:62578/api/DB [HTTP/1.1 200 OK 2ms]

しかし、私は成功をヒットしません。代わりに、エラーをヒットし、エラー関数にデータが渡されませんか?

var records;
var loadedData = new Array();

$.ajax({
    type: 'GET',
    dataType: 'json',  
    accept: "application/json",
    url: 'http://localhost:62578/api/DB',
    //data: { a:'a' },
   // contentType: 'application/json; charset=utf-8',
    success: function(data) {
    //I never get here.
        $.each(data, function (key, val) {//key is the row number, val is the  object data below
                $.each(val, function (key2, val2) {//key2 is the array element name, val2 is the data. 
                    if (key == 0) loadedData.push(key2);  //we only need one row of collumns
                });
                records = key;
                init(loadedData);   
                });
            },
             error: function(jqXHR, exception) {
            //both return undefined.
        }
        });

webapi サーバー ログ。

jttp = http 参考までに (愚かなスタック オーバーフロー)

iisexpress.exe Information: 0 : Request, Method=GET, Url=jttp://localhost:62578/api/DB, Message='jttp://localhost:62578/api/DB'
iisexpress.exe Information: 0 : Message='DB', Operation=DefaultHttpControllerSelector.SelectController
iisexpress.exe Information: 0 : Message='MvcApplication1.Controllers.DBController', Operation=DefaultHttpControllerActivator.Create
iisexpress.exe Information: 0 : Message='MvcApplication1.Controllers.DBController', Operation=HttpControllerDescriptor.CreateController
iisexpress.exe Information: 0 : Message='Selected action 'GetAllProducts()'', Operation=ApiControllerActionSelector.SelectAction
iisexpress.exe Information: 0 : Operation=HttpActionBinding.ExecuteBindingAsync
iisexpress.exe Information: 0 : Message='Action returned 'MvcApplication1.Models.DataBase[]'', Operation=ReflectedHttpActionDescriptor.ExecuteAsync
iisexpress.exe Information: 0 : Message='Will use same 'JsonMediaTypeFormatter' formatter', Operation=JsonMediaTypeFormatter.GetPerRequestFormatterInstance
iisexpress.exe Information: 0 : Message='Selected formatter='JsonMediaTypeFormatter', content-type='application/json; charset=utf-8'', Operation=DefaultContentNegotiator.Negotiate
iisexpress.exe Information: 0 : Operation=ApiControllerActionInvoker.InvokeActionAsync, Status=200 (OK)
iisexpress.exe Information: 0 : Operation=DBController.ExecuteAsync, Status=200 (OK)
iisexpress.exe Information: 0 : Response, Status=200 (OK), Method=GET, Url=jttp://localhost:62578/api/DB, Message='Content-type='application/json; charset=utf-8', content-length=unknown'
iisexpress.exe Information: 0 : Operation=JsonMediaTypeFormatter.WriteToStreamAsync
iisexpress.exe Information: 0 : Operation=DBController.Dispose
4

1 に答える 1

0

あなたのJavaScriptコードは別のポートにあると思います。おそらくポート 80 で、json リクエストはポート 62578 にあります。Ajax リクエストは、同じドメイン、プロトコル、およびポートでのみ許可されます。

問題を解決するには、JSONP データ型または他の同様のメカニズム (サーバー側のソリューション) を使用する必要があります。

JSONPの詳細については、ウィキペディアを参照してください。

jQuery ajax 呼び出しで JSONP を使用する方法については、この例を確認してください。

同様の質問については、stackoverflow を確認してください。

于 2013-03-14T17:34:29.110 に答える