使用Ajax调用启用Ajax的WCF

时间:2014-03-28 11:22:51

标签: jquery html ajax wcf

我怀疑是否可以将params作为数据传递给启用了ajax的WCF服务使用ajax调用这里是我的脚本代码

 $(document).ready(function () {
            $("#SendSms").click(function () {
                var data = 'Muthu';
                var text = JSON.stringify({ data: data });
                debugger;
                //data += '[0].Name=FromDate&[0].Value=' + 'Muthu';
                //data += '&[1].Name=ToDate&[1].Value=' + 'Kumar';
                //data += '&[2].Name=CustomerID&[2].Value=' + 'Ajit';
                //data += '&[3].Name=Status&[3].Value=' + 'Arun';
                $.ajax({
                    type: 'GET',
                    url: '*********/AjaxService.svc/DoWork',
                    dataType: "json",
                    data: text,
                    success: function (text) {
                        debugger;
                        $('#Panel').show();
                        $('#Panel').html(text.d);
                    },
                    error: function (jqXHR, textStatus, errorThrown) { alert(errorThrown); }
                });
            });
        });

我的服务代码

[OperationContract]
        //[WebInvoke (Method="POST")]
           [WebGet]
        public string DoWork(string text)
        {
            // Add your operation implementation here
            //return Get.Select(o => new ClientIssueEntry { FormName=o,Description=o+1});
            return text;
        }

请帮我解决这个问题..

3 个答案:

答案 0 :(得分:0)

将json变量的名称(data)与C#方法参数名匹配;因此,要么在JS结束时将data更改为text,要么在C#结束时将text更改为data

答案 1 :(得分:0)

 $(document).ready(function () {
            $("#SendSms").click(function () {
                var data = 'Muthu';
                var text = JSON.stringify({ text: data });
                $.ajax({
                    type: 'GET',
                    url: '*********/AjaxService.svc/DoWork',
                    dataType: "json",
                    contentType: "application/json; charset=utf-8",
                    data: text,
                    success: function (text) {
                        debugger;
                        $('#Panel').show();
                        $('#Panel').html(text.d);
                    },
                    error: function (jqXHR, textStatus, errorThrown) { alert(errorThrown); }
                });
            });
        });

        [OperationContract]
        [WebGet]
        public string DoWork(string text)
        {
            // Add your operation implementation here
            //return Get.Select(o => new ClientIssueEntry { FormName=o,Description=o+1});
            return text;
        }

答案 2 :(得分:0)

如果您正在执行GET操作,也只使用一个或两个非复杂参数,我建议使用 UriTemplate 。以下是基于您的代码的示例: -

界面: -

[ServiceContract]
public interface IAjaxService
{
    [OperationContract]
    [WebGet(UriTemplate = "DoWork?text={text}", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
    public string DoWork(string text);
}

实施

AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class IAjaxService : AjaxService
    {
        public string DoWork(string text)
        {
            // Do your work here.....
            return text;
        }
    }

从你的javascript中调用这个: -

$(document).ready(function () {
            $("#SendSms").click(function () {
                var input = 'Muthu';
                $.ajax({
                    type: 'GET',
                    url: "*********/AjaxService.svc/DoWork?text="+input,
                    dataType: "json",
                    success: function (responseData) {
                        //Do your work here ....
                    },
                    error: function (err1, err2, err3) { alert(err3); }
                });
            });
        });

这绝对适合你。如果您需要帮助,请发布。