嘿所有我從我的回調得到一個奇怪的回報時使用AJAX POST方法來調用我的web服務。jQuery AJAX附加到JSON返回數據「d:null」
的web服務發送回JSON是這樣的:
Dim ser As New System.Web.Script.Serialization.JavaScriptSerializer()
Dim strResponse As String = ser.Serialize(results)
Context.Response.Clear()
Context.Response.ContentType = "application/json"
Context.Response.AddHeader("content-length", strResponse.Length.ToString())
Context.Response.Write(strResponse)
HttpContext.Current.ApplicationInstance.CompleteRequest()
值以上strResponse的是:
"[{\"Column1\":\"0589S2F\"},{\"Column1\":\"53699FNS\"},{\"Column1\":\"C38VVFD\"},{\"Column1\":\"LFD55F\"},{\"Column1\":\"2ERfG\"},{\"Column1\":\"0079\"},{\"Column1\":\"2054\"},{\"Column1\":\"054FGW\"}]"
出於某種原因,我的ajax返回 OK但仍然進入錯誤邏輯,錯誤消息爲:
ERROR: "[{\"Column1\":\"0589S2F\"},{\"Column1\":\"53699FNS\"},{\"Column1\":\"C38VVFD\"},{\"Column1\":\"LFD55F\"},{\"Column1\":\"2ERfG\"},{\"Column1\":\"0079\"},{\"Column1\":\"2054\"},{\"Column1\":\"054FGW\"}]"{"d":null}
注意它是如何追加{「d」:空}我的請求結束......哪裏是從,因爲我不是在strResponse發送這樣的事情後面來? ??
我的Ajax請求代碼:
var sqlQ = "SELECT TOP 50 LTRIM(RTRIM(REPLACE(OID, ' ', ''))) FROM vwPSDAT WHERE OID != ''";
$.ajax({
type: 'POST',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
url: 'http://zzzz/Service1.asmx/theQ',
data: JSON.stringify({ qString: [sqlQ] }),
async: true,
cache: false,
success: function (data) {
var obj = jQuery.parseJSON(data);
console.log('done!');
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log('ERROR: ' + XMLHttpRequest.responseText);
}
});
所以..我不知道你的問題,但我想指出,從客戶端傳遞SQL查詢是一個可怕的想法。沒有什麼可以阻止用戶打開控制檯或使用fiddler向服務器發送任意語句(如可能是'DROP TABLE vwPSDAT')。 –
當你使用'dataType:'json'時,jQuery會自動解析響應。你不需要使用jQuery.parseJSON'。但這不是問題,因爲你沒有進入「成功」功能。 – Barmar
Web服務中必須有一些其他部分正在編寫'{「d」:null}'。 – Barmar