如何将参数传递给WCF Rest服务';来自javascript客户端的方法?

如何将参数传递给WCF Rest服务';来自javascript客户端的方法?,javascript,jquery,wcf,Javascript,Jquery,Wcf,我运行了一个wcf服务,其中包含一个返回字符串的方法。我能够在浏览器中成功运行该服务。此外,我甚至可以传递所需的参数,并可以在浏览器中看到结果 但是,当我试图从javascript客户端调用相同的方法时,参数值不会传递给该方法,因此它不会返回任何内容 以下是我的服务在从浏览器运行时重新运行的内容 以下是我的接口实现: [OperationContract] [WebInvoke(Method = "GET", ResponseFormat =

我运行了一个wcf服务,其中包含一个返回字符串的方法。我能够在浏览器中成功运行该服务。此外,我甚至可以传递所需的参数,并可以在浏览器中看到结果

但是,当我试图从javascript客户端调用相同的方法时,参数值不会传递给该方法,因此它不会返回任何内容

以下是我的服务在从浏览器运行时重新运行的内容

以下是我的接口实现:

 [OperationContract]

            [WebInvoke(Method = "GET",
            ResponseFormat = WebMessageFormat.Json,
            BodyStyle = WebMessageBodyStyle.Wrapped)]
            string JSONData(string id);
以下是我的服务方法实现代码:

public string JSONData(string id)
    {
        if (id == null || id == "")
        {
            return "Id is null";
        }
        else
        {
            return "You requested product " + id;
        }
    }
如上所示,服务工作正常,从url传递了一个参数。但是,当我使用jquery的函数参数进行调用时,没有传递,这是我的javascript客户端代码:

<script type="text/javascript">
        // A $( document ).ready() block.
        $(document).ready(function () {
            // alert("pass");
            var valu = "123";
            $("#btnclick").click(function () {
                debugger;
                $.ajax({
                    cache: false,
                    type: "GET",
                    async: false,
                    url: "http://localhost:35798/RestServiceImpl.svc/JSONData",
                    data: JSON.stringify(valu),
                    contentType: "application/json",
                    dataType: "json",
                    success: function (result) {
                        var ans = JSON.stringify(result);
                        alert("success");
                        alert(ans);
                    },
                    error: function (xhr) {
                        alert("error");
                        alert(xhr.responseText);
                    }
                });
            });
        });

    </script>

//$(document).ready()块。
$(文档).ready(函数(){
//警报(“通过”);
var valu=“123”;
$(“#b单击”)。单击(函数(){
调试器;
$.ajax({
cache:false,
键入:“获取”,
async:false,
url:“http://localhost:35798/RestServiceImpl.svc/JSONData",
数据:JSON.stringify(VAU),
contentType:“应用程序/json”,
数据类型:“json”,
成功:功能(结果){
var ans=JSON.stringify(结果);
警惕(“成功”);
警报(ans);
},
错误:函数(xhr){
警报(“错误”);
警报(xhr.responseText);
}
});
});
});

我希望能够从jquery代码中传递参数。我们非常感谢您提出的任何建议。

valu需要是一个键值对:

var valu = {id:"123"};
或字符串:

var value = 'id="123"';
以便当前形成适当的请求

在第一种情况下,将其作为普通JavaScript对象传递,不要将其字符串化。如果您这样做,jquery将把它作为字符串附加到请求中

使用浏览器中的网络调试工具解决这些问题

这将正确地将查询字符串序列化为
/JSONData?id=123
,而不是生成
/JSONData/“123”

你的代码与编辑

<script type="text/javascript">
    // A $( document ).ready() block.
    $(document).ready(function () {
        // alert("pass");
        var valu = {id: "123"};
        $("#btnclick").click(function () {
            debugger;
            $.ajax({
                cache: false,
                type: "GET",
                async: false,
                url: "http://localhost:35798/RestServiceImpl.svc/JSONData",
                data: valu,
                contentType: "application/json",
                dataType: "json",
                success: function (result) {
                    var ans = JSON.stringify(result);
                    alert("success");
                    alert(ans);
                },
                error: function (xhr) {
                    alert("error");
                    alert(xhr.responseText);
                }
            });
        });
    });

</script>

//$(document).ready()块。
$(文档).ready(函数(){
//警报(“通过”);
var valu={id:“123”};
$(“#b单击”)。单击(函数(){
调试器;
$.ajax({
cache:false,
键入:“获取”,
async:false,
url:“http://localhost:35798/RestServiceImpl.svc/JSONData",
数据:瓦卢,
contentType:“应用程序/json”,
数据类型:“json”,
成功:功能(结果){
var ans=JSON.stringify(结果);
警惕(“成功”);
警报(ans);
},
错误:函数(xhr){
警报(“错误”);
警报(xhr.responseText);
}
});
});
});

@Gdroid:CodeProject for service中的代码与我的代码完全相同,我试图在一个空白的客户端页面html中复制您的jquery,并将Rober正确的jquery代码保留在正文部分。我是ASP.NET新手,请帮助我如何确保此功能正常运行?我在WCF解决方案中创建了这个页面,从CodeProjects下载。您可以在浏览器中运行html页面,并使用F12键打开Element Inspector窗口,然后在console选项卡下,您可以找到您得到的响应,如果它显示为200,则其工作。。。