0

jquery を使用してクライアント コードから asmx Web サービスを呼び出そうとしています。しかし、実際にこれを達成するのは非常に難しいと思います。誰でも助けることができますか?

何が起こっている:

  1. JsonConvert は、返すためにオブジェクトを json に変換するために NewtonSoft によって作成されたライブラリです。

  2. asmx はドメイン b.company.com でホストされています

  3. クライアントの ajax 呼び出しは、ドメイン a.compay.com でホストされています。

  4. Fiddler は、単一の呼び出し 2 (2) 401 をピックアップし、次に 200 をピックアップします。これは、応答の JSON タブでは表示できません。

これは asmx コードです:

[WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public string PingCRM()
    {
        try
        {
            return JsonConvert.SerializeObject(new
            {
                Status = "OK",
                Data = "Hello CRM"
            });
        }
        catch (Exception ex)
        {
            return JsonConvert.SerializeObject(new
            {
                Status = "ERROR",
                Data = ex
            });
        }
    }

これは ajax jquery コードです。

$.ajax({
            url: url,
            type: "POST",
            data: {},
            contentType: "application/json; charset=utf-8",
            dataType: 'json',
            success: function (result) {
                console.log('ajax success');

                console.log('result = [' + result + ']');
            },
            error: function (xhr, status, error) {
                var txtError = 'status = [' + status + ']; Respsonse = [' + xhr.responseText + ']; Respsonse = [' + error + ']';
                console.log(txtError);
            }
        });

これは、応答のフィドラー「Raw」ビューです。

HTTP/1.1 200 OK
Cache-Control: private, max-age=0
Content-Type: text/xml; charset=utf-8
Vary: Accept-Encoding
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
Persistent-Auth: true
X-UA-Compatible: IE=9
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Content-Type, Accept
Access-Control-Allow-Methods: GET, POST
WWW-Authenticate: Negotiate oRswGaADCgEAoxIEEAEAAACWCH0UgarqcwAAAAA=
Date: Thu, 15 Aug 2013 22:47:12 GMT
Content-Length: 127
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://b.company.com/">{"Status":"OK","Data":"Hello CRM"}</string>
4

1 に答える 1