2

2 つのパラメーターを渡すときに、jquery から WCF 呼び出しを機能させることができません。コードを少し変更して、1 つだけを渡すと問題なく動作します。

Javascript:

 $.ajax({
    type: "POST", //GET or POST or PUT or DELETE verb
    url: "/Services/JobNumberService.svc/GetActiveJobNumberByCustomerOrJointBilling", // Location of the service
    data: '{"customerId": "' + customerId + '", "departmentId": "' + departmentId + '"}', //Data sent to server
    contentType: "application/json; charset=utf-8", // content type sent to server
    dataType: "json", //Expected data format from server
    processdata: true, //True or False
    success: function (msg) {//On Successfull service call
        fillDropDownFromLookupList(msg, jobNumberDropDownId);

        prependItemToDropDown('', 'NONE', jobNumberDropDownId); //Add blank item to top of list
    },
    error: ServiceFailed// When Service call fails
});

サービス署名:

public LookupList GetActiveJobNumberByCustomerOrJointBilling(int customerId, int departmentId)

渡されたjsonをフォーマットする方法に何かが必要です。JSONLintによれば有効ですが、.netが期待するものではないかもしれません。

アイデアを歓迎します。

編集

これは私が応答で返すものです

HTTP/1.1 500 Internal Server Error
Server: ASP.NET Development Server/11.0.0.0
Date: Thu, 28 Feb 2013 20:30:17 GMT
X-AspNet-Version: 4.0.30319
Cache-Control: private
Content-Length: 0
Connection: Close

また、エラーの原因を追跡するためにコードのデバッグだけをオフにしようとしましたが、何らかの理由で例外が表示されませんでした。

4

2 に答える 2

5

サービスはintパラメーターとして値を受け取りますが、文字列を送信しています。customerIdとが数字の場合departmentIdは、そのように解釈されるように、前後の引用符を削除する必要があります。

'{"customerId": ' + customerId + ', "departmentId": ' + departmentId + '}'
于 2013-02-28T20:49:37.473 に答える
4

あなたのコメントに基づいて、あなたの問題は、エンドポイントに複数のパラメーターをバインドしようとしている可能性があると思います。私は WCF の専門家ではありませんが、これが WebAPI では機能しないことは知っています。

一般に、修正は、バインディングを解析するためのモデルを作成することです。

public class CustomerModel { 
    public int customerId; 
    public int departmentId; 
}

次に、それを呼び出しの予想されるパラメーターにします。

public LookupList GetActiveJobNumberByCustomerOrJointBilling(CustomerModel model)

CustomerModel次の JSON オブジェクトが新しいオブジェクトに正しく逆シリアル化されるため、送信する JSON オブジェクトの周囲から引用符を削除するだけで、AJAX はそのまま機能するはずです。

{ "customerId": 1, "departmentId": 1 }

引用符を付けたままにすると、誤った結果が得られる可能性があります。これは、パーサーが受け取ったデータを JSON オブジェクトではなく文字列として解釈するためです。

于 2013-02-28T22:53:25.483 に答える