不执行Ajax Jquery中的函数成功

时间:2014-03-03 08:52:32

标签: javascript jquery ajax

我在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响应。 当我用警报显示状态和错误时,我有:

enter image description here

怎么了?

编辑:

我在webservice.asmx中有这个:

[WebMethod]
    [ScriptMethod(UseHttpGet = true)]
    public ResponseStatistic_6_Entete Statistic_6_Entete(DateTime start, DateTime end)
    {
        ...
    }

enter image description here

抱歉,我想错,我想要返回json对象。我使用其数据类型为json的其他方法,它工作得很好。当我说它返回正确的xml响应时,这是因为我在调试中看到它就是全部。我不明白为什么用这种方法,它不起作用!

3 个答案:

答案 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);
    }
});
}