使用senchatouch2中的POST方法将数组作为参数发送 [英] Sending array as parameters using POST method in senchatouch2

查看:187
本文介绍了使用senchatouch2中的POST方法将数组作为参数发送的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用此服务,我想使用senchatouch2中的POST方法将数组值存储到数据库中..服务写入(WCF)

Using this service i want to store array value into database using POST method in senchatouch2..Service is written in (WCF)

服务声明:

[OperationContract]
[WebInvoke(Method = "POST", 
           ResponseFormat = WebMessageFormat.Json,
           RequestFormat = WebMessageFormat.Json,
           BodyStyle = WebMessageBodyStyle.Wrapped,
           UriTemplate = "/Check1")]
int Psngr(string[] FirstName);

服务定义:

public static int Psngr(string[] FirstName)
{  
    List<Psgr> psgr = new List<Psgr>();
    var getVal = from s in FirstName select s;
    int count = getVal.Count();

    SqlConnection con = new SqlConnection(WebConfigurationManager.ConnectionStrings["db"].ToString());
    con.Open();

    using (var cmd = new SqlCommand("SP_InsertCheck1", con))
    {
        int result;
        cmd.CommandType = CommandType.StoredProcedure;

        for (int i = 0; i < count; i++)
        {
            cmd.Parameters.Clear();
            cmd.Parameters.AddWithValue("@FirstName", FirstName[i]);

            using (var Da = new SqlDataAdapter(cmd))
            using (var Ds = new DataSet())
            {
                Da.Fill(Ds);
                result = Convert.ToInt16(Ds.Tables[0].Rows[0]["Result"].ToString());
            }
        }
        return 1;
    }
}

我通过ajax请求访问了此服务,如下所示:

I accesssed this service through my ajax request as follows:

Ext.Ajax.request({
    url:'http://ws.easy4booking.com/E4b.svc/Check1',                                                   
    method:'POST',                                            
    disableCaching: false,                                          
    headers: {
       'Accept': 'application/json',
       'Content-Type': 'application/json'
    },
    params: {
        FirstName:fname_toString,  //FirstName:["Sam","Paul"],
},
    success:function(response) {
        console.log(response);
    }
});

当我访问上述服务lik时,出现以下错误

When I accessed this service lik mentioned above i got following error

请求错误:

服务器在处理请求时遇到错误.异常消息为格式化程序尝试对消息进行反序列化时引发了异常:对操作'Psngr'的请求消息正文进行反序列化时出错.遇到意外字符"F".有关更多详细信息,请参见服务器日志.异常堆栈跟踪为:

The server encountered an error processing the request. The exception message is 'The formatter threw an exception while trying to deserialize the message: Error in deserializing body of request message for operation 'Psngr'. Encountered unexpected character 'F'.'. See server logs for more details. The exception stack trace is:

在System.ServiceModel.Dispatcher.OperationFormatter.DeserializeRequest(消息,Object []参数)在 System.ServiceModel.Dispatcher.DemultiplexingDispatchMessageFormatter.DeserializeRequest(消息消息,Object []参数)位于 System.ServiceModel.Dispatcher.UriTemplateDispatchFormatter.DeserializeRequest(消息,Object []参数)位于 System.ServiceModel.Dispatcher.CompositeDispatchFormatter.DeserializeRequest(消息,Object []参数)位于 System.ServiceModel.Dispatcher.DispatchOperationRuntime.DeserializeInputs(MessageRpc& rpc)位于 System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)位于 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)位于 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc& rpc)位于 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc)位于 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc)位于 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& rpc)位于 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& rpc)位于 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)位于 System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean)上的System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc) isOperationContextSet)

at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeRequest(Message message, Object[] parameters) at System.ServiceModel.Dispatcher.DemultiplexingDispatchMessageFormatter.DeserializeRequest(Message message, Object[] parameters) at System.ServiceModel.Dispatcher.UriTemplateDispatchFormatter.DeserializeRequest(Message message, Object[] parameters) at System.ServiceModel.Dispatcher.CompositeDispatchFormatter.DeserializeRequest(Message message, Object[] parameters) at System.ServiceModel.Dispatcher.DispatchOperationRuntime.DeserializeInputs(MessageRpc& rpc) at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc) at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)

推荐答案

当v使用POST方法在SenchaTouch2中传递参数时,请在Ajax Request之类的 jsonData 中使用

When v use POST method to pass parameters in SenchaTouch2 use jsonData in Ajax Request like,

Ext.Ajax.request({ 网址:'', 方法:"POST", disableCaching:false, 标头:{ 'Accept':'application/json', 'Content-Type':'application/json' }, jsonData :{ FirstName:fname//{"FirstName":["Sam","paul"]} }, 成功:功能(响应) { console.log(response.responseText); }, 失败:功能(响应) { console.log(response.responseText); }, });

Ext.Ajax.request({ url:'', method:'POST', disableCaching:false, headers: { 'Accept':'application/json', 'Content-Type':'application/json' }, jsonData: { FirstName:fname //{"FirstName":["Sam","paul"]} }, success: function(response) { console.log(response.responseText); }, failure: function(response) { console.log(response.responseText); }, });

这篇关于使用senchatouch2中的POST方法将数组作为参数发送的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆