[英]jquery ajax returns no transport on a RESTful webservice
我有一個RESTful Web服務,可以在已發布的服務器上成功ping通,以將測試作為演示返回。 我試圖將一些代碼放在要調用的方法中,但是在AJAX調用上似乎失敗。 我不知道錯誤在哪里,因為我不在本地主機上運行服務器。 我知道Web服務被正確調用,因為語法與設計中的測試相同
我也有類似的方法,但是它不是RESTful的,所以我相應地遷移了所有數據,所以我知道方法中的代碼可以正常工作。
下面是發布的AJAX調用:
$.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服務界面:
[OperationContract]
[WebInvoke(Method = "POST",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "getWebFormDesignFieldContents")]
string getWebFormDesignFieldContents(WebFormFieldClass inputData);
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。
同樣,您的URIParameter像這樣添加前導斜杠“ /”
/getWebFormDesignFieldContents
網址:URL +'/ getWebFormDesignFieldContents',
您有兩個選擇,要么發出POST請求,要么使用GET將您的參數(例如'pr_id'等)作為UriTemplate參數傳遞
我已經在我的末端進行了這樣的測試:
<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>
我的IService1.svc
[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);
這個問題來自瀏覽器,或者看起來是這樣。 所有這些信息都是正確的,但是我得到的錯誤和問題來自IE及其對Ajax的討厭。 與此相關的另一個問題是,我們必須向ASP添加一堆引用,以使程序能夠成功處理來自目標的信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.