0

jQueryからWebMethodを呼び出す際に問題が発生しているようです。この記事を出発点として使用しています:

http://www.misfitgeek.com/2011/05/calling-web-service-page-methods-with-jquery/

JS

    function WebMethod(fn, paramArray, successFn, errorFn) 
     {
        //----------------------------------------------------------------------+
        // Create list of parameters in the form:                               |
        // {'paramName1':'paramValue1','paramName2':'paramValue2'}              |
        //----------------------------------------------------------------------+
        var paramList = '';
        if (paramArray.length > 0) {
            for (var i = 0; i < paramArray.length; i += 2) {
                if (paramList.length > 0) paramList += ',';
                paramList += '"' + paramArray[i] + '":"' + paramArray[i + 1] + '"';
            }
        }

        paramList = '{' + paramList + '}';

        //----------------------------------------------------------------------+
        // Call the WEB method                                                  |
        //----------------------------------------------------------------------+
        $.ajax({
            type: 'POST',
            url: 'ContractView.aspx' + '/' + fn,
            contentType: 'application/json; charset=utf-8',
            data: paramList,
            dataType: 'json',
            success: successFn,
            error: errorFn
        });
    };

私はこのようにこのメソッドに渡しています:

    $(".editableField").keydown(function(e) {

                    WebMethod('PriceContract',
                            [
                             'AQ', aq.val(),
                             'SOQ', soq.val()
                            ], updateTextFields, failed);

        });

C#(これらはテストメソッドであることに注意してください。ロジックは無視してください。)

     [WebMethod]
        public static ContractsListPricing PriceContract(string AQ, string SOQ)
        {
            ContractsListPricing clp = new ContractsListPricing();

           // clp.Aq = nAQ * 2;
           // clp.Soq = nSOQ * 2;

            return clp;
        }

JSをデバッグするとき、paramListは正しいJSONのようです(またはそう私は信じています):

{"AQ": "140000"、 "SOQ": "1169"}

これにより、parseerrorが発生し、理由がわかりません。

助けていただければ幸いです。

ありがとう

4

1 に答える 1

1

いいえ、文字列操作を使用して手動でJSONを構築しないでください。それは絶対に恐ろしいです。この記事を見てください。

正しい方法は次のとおりです。

function WebMethod(fn, paramArray, successFn, errorFn) {
    var paramList = { };
    if (paramArray.length > 0) {
        for (var i = 0; i < paramArray.length; i += 2) {
            paramList[paramArray[i]] = paramArray[i + 1];
        }
    }

    $.ajax({
        type: 'POST',
        url: 'ContractView.aspx' + '/' + fn,
        contentType: 'application/json; charset=utf-8',
        data: JSON.stringify(paramList),
        dataType: 'json',
        success: successFn,
        error: errorFn
    });
}

オブジェクトJSON.stringifyを適切にJSONエンコードするためのメソッドの使用法に注意してください。paramListこのメソッドは、最新のブラウザーにネイティブに組み込まれています。従来のブラウザをサポートする必要がある場合は、json2.jsスクリプトをページに含めることができます。

于 2012-06-13T11:14:03.053 に答える