2013-09-20 4 views
0

Ниже приводится кодКак получить ответ ajax в jquery?

function CreateDiv(D) { 

    D.body = function() { 
      var d; 

      $.ajax({ 
       type: "GET", 
       url: "Default.aspx", 
       data: 'ExtrFlag=GetChat&userID=1&FriendID=' + this.id, 
       success: function (data) { 

        d= data.split('@@@')[0]); 

       }, 
       error: function (xhr) { 
        alert(xhr.responseText); 

       } 
      }); 
    var reutnData = "<div class='chatBody' id='chatBody" + this.id + "' >"+d+"</div>"; 
      return reutnData; 
     }; 
     D.create = function() { 
      var exist = $("#Container").find("div[id=chatbox" + this.id + "]"); 
      if (exist.length == 0) { 

        var ToAppend = "<div id='chatbox" + this.id + "' style='" + D.style() + "' class='chatboxclass' >" + D.header() +D.body()+ "</div>"; 
       $("#Container").append(ToAppend); 
       align++; 
      } 

     }; 

     return D; 
    } 

function NewChat(id,username,picture) { 

     var div = new CreateDiv({ width: 250, height: 285, id: id, username: username, picture: picture }); 
     div.create(); 
    } 

d всегда неопределенный, и это не возвращает Аякс запроса, что я делаю неправильно?

+2

вызов Ajax является асинхронной. Вы можете получить доступ к «d» в функции успеха, но не должны пытаться получить к нему доступ в другом месте! – MrP

+0

, так что нет другого способа добиться этого? – Sora

+0

Не так, как вы делаете это прямо сейчас, вам нужно будет сделать это с помощью обратного вызова. – MrP

ответ

0

Пример кода:

JS-

var dataString = 'ExtrFlag=GetChat&userID=1&FriendID=' + this.id 

$.ajax({ 
     type: "POST", 
     url: "ajax_function/updatefn.asmx/addABC", 
     data: "{ 'prefix': '" + dataString + "'}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: OnSuccessCall, 
     error: OnErrorCall 
    }); 


function OnSuccessCall(response) { 
       var responeValue = response.d; 
       var costpart = String(responeValue).split("-"); 
       var get_id = costpart[1]; 
..... 
} 

Code-Behind:

[WebMethod] 
    public string[] addABC(string prefix) 
    { 
     string status = ""; string strFLag=""; 
     string val_id = ""; 
     string datastr = prefix; 
     string[] val = datastr.Split('&'); 
     string[] extrFlag = val[0].Split('='); 
     strFLag= extrFlag [1]; 
     // code logici .i.e which returns strFLag="abc"; val_id="23"; 

     d.Add(string.Format("{0}-{1}", strFLag, val_id)); 
     return d.ToArray(); 
    } 
Смежные вопросы