0

このサービスを使用して、senchatouch2 で POST メソッドを使用して配列値をデータベースに格納したい..サービスは (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 リクエストを介してこのサービスにアクセスしました。

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

上記のこのサービスにアクセスすると、次のエラーが発生しました

リクエスト エラー:

サーバーでリクエストの処理中にエラーが発生しました。例外メッセージは、「メッセージのデシリアライズ中にフォーマッタが例外をスローしました: 操作 'Psngr' のリクエスト メッセージのボディをデシリアライズ中にエラーが発生しました。予期しない文字「F」に遭遇しました。詳細については、サーバー ログを参照してください。例外スタック トレースは次のとおりです。

System.ServiceModel.Dispatcher.OperationFormatter.DeserializeRequest (メッセージ メッセージ、オブジェクト [] パラメーター) で System.ServiceModel.Dispatcher.DemultiplexingDispatchMessageFormatter.DeserializeRequest (メッセージ メッセージ、オブジェクト [] パラメーター) で System.ServiceModel.Dispatcher.UriTemplateDispatchFormatter.DeserializeRequest (メッセージSystem.ServiceModel.Dispatcher.DispatchOperationRuntime.DeserializeInputs(MessageRpc& rpc) で System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin で System.ServiceModel.Dispatcher.CompositeDispatchFormatter.DeserializeRequest(メッセージ メッセージ、Object[] パラメータ) でメッセージ、Object[] パラメータ) (MessageRpc& rpc) System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc) で System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc&System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc) で System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc) で System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& rpc) で System.ServiceModel.Dispatcher System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc) の .ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& rpc) System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc) の System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)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 System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet) の .ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc)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 System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet) の .ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc)rpc) System.ServiceModel.Dispatcher.MessageRpc.Process (Boolean isOperationContextSet) でrpc) System.ServiceModel.Dispatcher.MessageRpc.Process (Boolean isOperationContextSet) で

4

2 に答える 2

1

SenchaTouch2 でパラメータを渡すために POST メソッドを使用する場合、Ajax リクエストでjsonDataを使用します。

Ext.Ajax.request({ url:'', method:'POST', disableCaching:false, headers: { 'Accept':'application/json', 'Content-Type':'application/json' }, jsonData : { FirstName:fname //{"FirstName":["Sam","paul"]} }, 成功: function(response) { console.log(response.responseText); }, 失敗: function(response) { console.ログ (応答.応答テキスト); }, });

于 2013-04-20T04:22:40.933 に答える