如何在这种情况下做ajax?

时间:2014-06-09 12:51:58

标签: c# javascript jquery ajax webmethod

javascript代码

  function new_person_adder1() {

                var dataAjax = {
                    'entry_new_person_': $('#entry_new_person_1').val(),
                    'pop_new_person_identity_no': $('#pop_new_person_identity_no1').val(),
                    'identity_type_no': $('#select2_identity_type_bc_for_new_person_1').val()
                };
                jQuery.ajax({
                    url: 'WalkReserve.aspx/quick_person_entry',
                    type: 'POST',
                    data: JSON.stringify(dataAjax),
                    contentType: 'application/json; charset=utf-8',
                    dataType: 'json',
                    success: function (data) {
                        console.log(data.d);
                        if (data.d > 0) {
                            alert('Successfully Added');
                        } else {
                            alert('Failed to entry data!');
                        }
                    },
                    error: function (result) {
                        alert('Failed!');
                        console.log('Failed' + result.responseText);
                    }
                });
            }

C#代码

 [WebMethod]
            public static string quick_person_entry(dynamic entry_new_person_, dynamic identity_type_, dynamic pop_new_person_identity_no)
            {
                return Convert.ToString(BAL.pop_quick_person_entry(entry_new_person_, identity_type_, pop_new_person_identity_no));
            }

ajaxdata   enter image description here

我收到以下错误

Failed{"Message":"Invalid web service call, missing value for parameter: 
 \u0027identity_type_\u0027.","StackTrace":"   at 
 System.Web.Script.Services.WebServiceMethodData.CallMethod(Object target, IDictionary`2 parameters)\r\n   at 
System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(Object target, IDictionary`2 parameters)\r\n   at 
System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext context, WebServiceMethodData methodData, IDictionary`2 rawParams)\r\n   at 
System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.InvalidOperationException"} 

我想在这里发送ajax但是由于一些奇怪的原因我无法做到。 我超过了错误。任何人都可以指出我的错误或帮助我?

2 个答案:

答案 0 :(得分:1)

查看方法所需的参数:

entry_new_person_
identity_type_
pop_new_person_identity_no

正在发送的参数:

entry_new_person_
identity_type_no
pop_new_person_identity_no

中间参数不同。它的类似,但它不是一回事。模型绑定器不够智能(谢天谢地)匹配只是相似的东西。更改JavaScript代码中的键应修复它:

var dataAjax = {
    'entry_new_person_': $('#entry_new_person_1').val(),
    'pop_new_person_identity_no': $('#pop_new_person_identity_no1').val(),
    'identity_type_': $('#select2_identity_type_bc_for_new_person_1').val()
};

(或者更改方法中的参数名称也会修复它。取决于哪一个是更大的变化。例如,如果你对这个方法有大量的JavaScript调用,那么对方法的单个更改将比对方法调用的许多更改。)

答案 1 :(得分:0)

删除dataType: 'json'后尝试它会起作用。

将web mthod中的Web Type定义为POST