2014-09-02 3 views
1
код

Javascript:AJAX responseText неопределенными

............... 
............... 
var cutid = $(th).attr("data-cutid"); 

var request = $.ajax({ 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    url: "Services/Cut.asmx/CheckCuts", 
    data: "{'cuts':" + JSON.stringify(ListCuts) + ",'idCut':'" + cutid + "'}", 
    dataType: "json" 
}).responseText; 

alert(request); // undefined 

Функция от веб-сервиса:

[WebMethod]   
    public string CheckCuts(List<CutM> cuts, Guid idCut) 
    { 
     return UtilCut.CheckCuts(cuts, idCut).ToString(); 
    } 

responseText не определен. Зачем?


Я добавил асинхров: ложные Аякса запроса. Настройка async на false означает, что оператор, который вы вызываете, должен завершиться до того, как будет вызываться следующий оператор в вашей функции.

Этот код работает:

function AjaxCheckCuts(ListCuts,cutid) 
{ 
    var request = $.ajax({ 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    url: "Services/Cut.asmx/CheckCuts", 
    async: false, 
    data: "{'cuts':" + JSON.stringify(ListCuts) + ",'idCut':'" + cutid + "'}", 
    dataType: "json"  
    }).responseText; 

    var r = jQuery.parseJSON(request); 
    r = r.d; 
    return r; 
} 

ответ

3

Является ли веб-служба работает правильно? Он возвращает HTTP 200? Вы можете видеть данные, возвращаемые с помощью инструментов F12 или Fiddler?

$.ajax() возвращает отложенное. Определите метод done, который будет выполняться при завершении асинхронного вызова. Существует не responseText собственности, поэтому он возвращает undefined.

Попробуйте это:

var cutid = $(th).attr("data-cutid"); 

var request = $.ajax({ 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    url: "Services/Cut.asmx/CheckCuts", 
    data: "{'cuts':" + JSON.stringify(ListCuts) + ",'idCut':'" + cutid + "'}", 
    dataType: "json" 
}); 

request.done(function(result){ 
    alert(result); 
});