我在Jquery中有这个代码,它总是显示错误函数:
function getStatistic6() {
var response;
var allstat6 = [];
var dstart = "01.01.2014";
var dend = "03.31.2014";
$.ajax({
type: 'GET',
url: 'http://localhost:52251/Service1.asmx/Statistic_6_Entete',
data: { "start": dstart, "end": dend },
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
dataType: 'json',
success: function (msg) {
response = msg.d;
for (var i = 0; i < response.Items.length; i++) {
var j = 0;
allstat6[i] = [response.Items[i].Date, response.Items[i].Piece, response.Items[i].Tiers, response.Items[i].AmoutHT, response.Items[i].AmountTTC, response.Items[i].Quantite];
}
fillDataTable6(allstat6);
$('table').visualize({ type: 'line' });
},
error: function (e) {
alert("error loading statistic 6");
}
});
}
当我检查调试时,我的Web服务方法返回了良好的xml响应。 当我用警报显示状态和错误时,我有:
怎么了?
编辑:
我在webservice.asmx中有这个:
[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public ResponseStatistic_6_Entete Statistic_6_Entete(DateTime start, DateTime end)
{
...
}
抱歉,我想错,我想要返回json对象。我使用其数据类型为json的其他方法,它工作得很好。当我说它返回正确的xml响应时,这是因为我在调试中看到它就是全部。我不明白为什么用这种方法,它不起作用!
答案 0 :(得分:3)
我的Web服务方法返回良好的xml响应。
但
dataType:'json',
您已告诉您的代码忽略服务器所说的数据,并尝试将其解析为JSON。由于它不是JSON而是XML,因此失败。
删除dataType
属性。
然后你有:
for (var i = 0; i < response.Items.length; i++) {
但你需要用DOM方法(或围绕它们的jQuery包装器)替换它来访问数据,因为它将是一个XML DOM而不是一个简单的JS对象。
答案 1 :(得分:0)
如您所述,xml
中的网络服务响应请使用
dataType:"xml"
函数中的ajax
除了使用$.parseXML()
解析XML响应数据外。
答案 2 :(得分:0)
我用JSON.stringify解决了我的问题:
function getStatistic6() {
var response;
var allstat6 = [];
var dstart = "01.01.2014";
var dend = "03.31.2014";
$.ajax({
type: 'GET',
url: 'http://localhost:52251/Service1.asmx/Statistic_6_Entete',
data: {"start": JSON.stringify(dstart), "end": JSON.stringify(dend) },
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (msg) {
response = msg.d;
for (var i = 0; i < response.Items.length; i++) {
var j = 0;
allstat6[i] = [response.Items[i].Date, response.Items[i].Piece, response.Items[i].Tiers, response.Items[i].AmoutHT, response.Items[i].AmountTTC, response.Items[i].Quantite];
}
fillDataTable6(allstat6);
$('table').visualize({ type: 'line' });
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("error loading statistic 6");
alert("Status: " + textStatus+"\n"+"Error: " + errorThrown);
}
});
}