jQueryAjax在RESTfulWebService上不返回传输
我有一个RESTfulWebService,我可以在发布的服务器上成功地ping它,以作为演示返回测试。然后我尝试在方法中加入一些代码来调用,但在AJAX调用中似乎失败了。我不知道错误在哪里,因为我不知道本地主机上运行的服务器。我知道Web服务被正确调用,因为语法与设计中的测试相同 我有一个类似的方法,但它不是RESTful的,所以我相应地迁移了所有数据,所以我知道方法中的代码工作正常 下面发布了AJAX调用:jQueryAjax在RESTfulWebService上不返回传输,jquery,asp.net,ajax,rest,Jquery,Asp.net,Ajax,Rest,我有一个RESTfulWebService,我可以在发布的服务器上成功地ping它,以作为演示返回测试。然后我尝试在方法中加入一些代码来调用,但在AJAX调用中似乎失败了。我不知道错误在哪里,因为我不知道本地主机上运行的服务器。我知道Web服务被正确调用,因为语法与设计中的测试相同 我有一个类似的方法,但它不是RESTful的,所以我相应地迁移了所有数据,所以我知道方法中的代码工作正常 下面发布了AJAX调用: $.ajax({ type: 'GET',
$.ajax({
type: 'GET',
url: WEBSERVICE_URL + 'getWebFormDesignFieldContents',
data: JSON.stringify({
'pr_id': LOGGED_IN_PR_ID,
'fe_name': opts,
'_count': 200, //this might need to be adjusted slightly. I may want to make it more OR less.
'_also_search_fe_desc': true,
'opts': opts
}),
contentType: 'application/json; charset=utf-8',
dataType: 'jsonp',
success: function (result) {
//success
var r = $(result.getWebFormDesignFieldContentsResult)[0];
var div = $("<div class='modal'>").html(r.d);
/*
var d = document.createElement("div");
d.className = "modal";
d.appendChild(r[0]);
*/
$("div.modal").replaceWith(div);
$("div.modal #queryInput").val(opts);
$("div.modal").css({
top: $(window).height() / 2 - $("div.modal").height() / 2,
left: $(window).width() / 2 - $("div.modal").width() / 2
});
$("div.modal").fadeIn();
},
error: function (result) {
//error
//alert("Error: "+result.statusText);
alert(result.statusText);
//$("div.modal").replaceWith($("<div class = 'modal'>").html(result.responseText));
//$("div.modal").fadeIn();
$("div.overlay").fadeOut();
}
});
Web服务功能
public string getWebFormDesignFieldContents(string pr_id, string fe_name, string _count, string _also_search_fe_desc, string opts)
{
int count = Convert.ToInt32(_count);
bool also_search_fe_desc = Convert.ToBoolean(_also_search_fe_desc);
...
}
[DataContract]
public class WebFormFieldClass
{
[DataMember]
public string pr_id { get; set; }
[DataMember]
public string fe_name { get; set; }
[DataMember]
public int count { get; set; }
[DataMember]
public string also_search_fe_desc { get; set; }
[DataMember]
public string opts { get; set; }
}
编辑:
好的,您的问题是,您正在使用GET将JSON对象作为数据传递
但是很抱歉,对于GET请求,您使用查询字符串参数。如果要发送整个JSON对象,应该使用POST
此外,您的URI参数还可以添加一个前导斜杠“/”,如下所示
/getWebFormDesignFieldContents
url:url+'/getWebFormDesignFieldContents'
您有两个选项,要么发出POST请求,要么使用GET pass参数,如
“pr_id”等作为模板参数
我在我这边做过这样的测试:
<script src="Jquery-1.7.2.js" type="text/javascript"></script>
<script type="text/javascript">
var URL = 'http://localhost:11431/Service1.svc/getWebFormDesignFieldContents';
$.ajax({
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({
'pr_id': 'ss',
'fe_name': 'ss',
'_count': 22, //this might need to be adjusted slightly. I may want to make it more OR less.
'_also_search_fe_desc': true,
'opts': 'kk'
}),
url: URL,
success: function (data) {
alert(data);
},
error: function (xhr, status, message) {
alert("Error: " + status + " " + message);
}
});
</script>
这个问题来自浏览器,或者看起来是这样。所有这些信息都是正确的,但我得到的错误和问题来自IE及其对ajax的憎恨。另一个问题是,我们必须向ASP添加一组引用,以允许程序成功处理来自目标的信息。是的,但对于我的Behavior配置,它设置为“web”,因此您的意思是您可以联系服务,但无法得到任何回复?另外,如果您是从aspx页面尝试此操作,是的,我可以通过URL与服务联系,但不能通过ajax请求。还有,是的,这是来自一个ASPX页面,该调用在客户端完成jQuery@Fallenreaper当前位置已编辑我的anwser如果清楚请告诉我:)可能是您可以逐步将ste与我的进行比较..很高兴它有所帮助
<script src="Jquery-1.7.2.js" type="text/javascript"></script>
<script type="text/javascript">
var URL = 'http://localhost:11431/Service1.svc/getWebFormDesignFieldContents';
$.ajax({
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({
'pr_id': 'ss',
'fe_name': 'ss',
'_count': 22, //this might need to be adjusted slightly. I may want to make it more OR less.
'_also_search_fe_desc': true,
'opts': 'kk'
}),
url: URL,
success: function (data) {
alert(data);
},
error: function (xhr, status, message) {
alert("Error: " + status + " " + message);
}
});
</script>
[OperationContract]
[WebInvoke(Method = "POST",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped)]
string getWebFormDesignFieldContents(string pr_id, string fe_name, string _count, string _also_search_fe_desc, string opts);