0

我正在从 jQuery 调用 WebMethod,执行以下操作:

 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];
        }
    }

    var params = $.toJSON(paramList);

    $.ajax({
        type: 'POST',
        url: '../../PricingEngine/ContractView.aspx' + '/' + fn,
        contentType: 'application/json; charset=utf-8',
        data: params,
        dataType: 'json',
        success: successFn,
        error: function(xhr, status, error) {
            // Display a generic error for now.
            alert("AJAX Error!");
        }
    });
}


// Used returned object to populate every field
function updateTextFields(result) {
    //do some processing here
}

function failed(result) {
    alert('failed');

}

// EVENTS
// ------------------------------------------------------------

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

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

});

.toJSON 之后的 JSON 字符串已被调用:

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

C#方法

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

    clp.Aq = 1;
    clp.Soq = 2;

    return clp;
}

这将返回以下错误:

无效的 JSON:(后跟当前页面的完整 HTML)。

请不要注意 C# 中的逻辑,因为这还没有实现。我正在使用 jquery-json 插件来解析 JSON。

谢谢

4

2 回答 2

0

您确定确切的网址是 '../../PricingEngine/ContractView.aspx' + '/' + fn 吗?

因为 ContractView.aspx 是您当前的网页

于 2012-06-14T09:26:28.743 回答
0

我已经运行了您的代码演示并使其正常工作。您是否检查过您的 web.config 中正确设置了 ScriptModule 处理程序?

于 2012-06-14T15:53:27.483 回答