1

Chromeデバッガーは、名前を「GetPurchaseOrdersComponent」、パスを「/ Cost」と表示していますが、Telerikグリッドコントロールによって行われた呼び出しの名前は「4485」、パスは「/ Cost / GetPurchaseOrders」です(これらは機能しています)。また、私の呼び出しのタイプ(Chromeのデバッガーで表示した場合)はtext / htmlですが、動作中の呼び出しでは、application/jsonです。私が得ているエラーは「500(内部サーバーエラー)」です。この呼び出しには、他の呼び出しと同様のルートが定義されています。これが私のコードです:

$.ajax({
        url: "/Cost/GetPurchaseOrdersComponent",
        type: "GET",
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        async: true,
        data: { id: 1 },
        success: function (result) {
            $("#ComponentsMultiLevelGrid").html(result);
        }
    });


[HttpGet]
public string GetPurchaseOrdersComponent(int id)
{
     return "some string";
}

アップデート:

動作する呼び出しのヘッダーは次のとおりです(この呼び出しはTelerikグリッドからのものです)。

Request URL:http://localhost:61751/Cost/GetSupplierCatalogs/4485?key=4485&_=1340830508447
Request Method:POST
Status Code:200 OK

**Request Headers** - view source
Accept:text/plain, */*; q=0.01
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Content-Length:13
Content-Type:application/x-www-form-urlencoded
Cookie:ASP.NET_SessionId=uxn1ctvzcchyrbreymcgz1vl
Host:localhost:61751
Origin:http://localhost:61751
Referer:http://localhost:61751/Transaction/4485
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5
X-Requested-With:XMLHttpRequest

**Query String Parameters** - view URL encoded
key:4485
_:1340830508447
Form Dataview URL encoded
page:1
size:5

**Response Headers** - view source
Cache-Control:private
Connection:Close
Content-Length:21
Content-Type:application/json; charset=utf-8
Date:Wed, 27 Jun 2012 20:55:28 GMT
Server:ASP.NET Development Server/10.0.0.0
X-AspNet-Version:4.0.30319
X-AspNetMvc-Version:3.0

失敗した呼び出しのヘッダーは次のとおりです(これはjQuery呼び出しです)。

Request URL:http://localhost:61751/Cost/GetPurchaseOrdersComponent?id=1
Request Method:GET
Status Code:500 Internal Server Error

**Request Headers** - view source
Accept:text/plain, */*; q=0.01
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Content-Type:application/x-www-form-urlencoded
Cookie:ASP.NET_SessionId=uxn1ctvzcchyrbreymcgz1vl
Host:localhost:61751
Referer:http://localhost:61751/Transaction/4485
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5
X-Requested-With:XMLHttpRequest

**Query String Parameters** - view URL encoded
id:1

**Response Headers** - view source
Cache-Control:private
Connection:Close
Content-Length:10434
Content-Type:text/html; charset=utf-8
Date:Wed, 27 Jun 2012 20:55:25 GMT
Server:ASP.NET Development Server/10.0.0.0
X-AspNet-Version:4.0.30319
4

2 に答える 2

1

JSONリクエストはでPOSTのみ機能するため、正しい動詞を使用する必要があります。また、JSONリクエストを送信する必要があります。これは、contentTypeパラメーターで指定したものだからです。これは、次のJSON.stringify方法で実現されます。

$.ajax({
    url: "/Cost/GetPurchaseOrdersComponent",
    type: "POST",
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    async: true,
    data: JSON.stringify({ id: 1 }),
    success: function (result) {
        $("#ComponentsMultiLevelGrid").html(result);
    }
});

または、JSONリクエストを使用したくない場合は、contentTypeパラメーターを削除します。

$.ajax({
    url: "/Cost/GetPurchaseOrdersComponent",
    type: "GET",
    dataType: "json",
    async: true,
    data: { id: 1 },
    success: function (result) {
        $("#ComponentsMultiLevelGrid").html(result);
    }
});
于 2012-06-27T18:03:55.713 に答える
1

これは機能します。理由を聞かないでください。

$.ajax({
    url: '@Url.Action("GetPurchaseOrdersComponent", "Cost", new { id = ViewBag.CustomerEstimateKey })',
    type: "GET",
    dataType: "text",
    async: true,
    success: function (result) {
        $("#ComponentsMultiLevelGrid").html(result);
    }
});
于 2012-06-28T16:42:30.713 に答える