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