使用ExtJS将数据发送到Restful WCF服务

时间:2013-11-21 07:03:20

标签: wcf extjs extjs4.2

这是我的WCF服务定义用于验证用户的方式:

[OperationContract]
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json)]
string validateUser(string username, string password);

它只返回“Validated”或“NotValidated”作为结果。

我的ExtJS代码是:

function loginclick(btn) {
                    var form = mainPanel.getForm();
                    if (form.isValid()) {
                        var userget = Ext.getCmp('txtuser').value;
                        var passget = Ext.getCmp('txtpass').value;
                        var myparams = { 'username': userget, 'password': passget };

                        Ext.Ajax.request({
                            url: 'http://localhost:52984/ExtJsRestfulService.svc/validateUser',
                            params: Ext.encode(myparams),                              
                            method: 'POST',
                            headers: this.header || { 'Content-Type': 'application/json;charset=utf-8' },
                            success: function (response, options) {
                                var s = response.responseText;
                                Ext.MessageBox.alert('Success', s);

                            },
                            failure: function (response, options) {
                                Ext.MessageBox.alert('Failed', 'Unable to get');
                            }

                        });
                    }

                }

当我点击登录按钮时,我收到错误的请求(400)错误。我的服务不在同一个解决方案中。当我将数据发布到同一解决方案中的aspx表单时,它可以工作。我做错了什么?

2 个答案:

答案 0 :(得分:0)

您是否尝试过无编码?

尝试

params: {

'username': userget,
'password': passget

}

为什么你有两次params配置?

你不应该使用Ext.getCmp而是使用Ext.ComponentQuery.query('myXtype [itemId = myItemId]')[0]; http://docs.sencha.com/extjs/4.2.2/#!/api/Ext.ComponentQuery

定义服务的方式是对其进行调用,如

string validateUser();

然后在服务内部做类似的事情:

String pass = request.getParameter("password");

喜欢java

答案 1 :(得分:0)

怎么样:

                             Ext.Ajax.request({
                             url: 'http://yourdomain:52984/ExtJsRestfulService.svc/validateUser?username='+userget+'&password='+passget,
                             params: Ext.encode(myparams),                              
                             method: 'GET',
                             headers: this.header || { 'Content-Type': 'application/json;charset=utf-8' },
                            success: function (response, options) {
                                var s = response.responseText;
                                 Ext.MessageBox.alert('Success', s);

                             },
                             failure: function (response, options) {
                                 Ext.MessageBox.alert('Failed', 'Unable to get');

                         }

                     });

你能从网址中获取参数吗?