2013-02-13 86 views
1

下面是一個Ajax POST變量,用於將一些信息返回給ASP MVC3視圖。但是,我無法使.dialg()彈出功能正常工作。現在你點擊調用GetProgramDetails(pgmname)的圖標,沒有任何反應。第一次使用Ajax,所以任何建議,將不勝感激。謝謝!將Ajax POST變量傳遞給JQuery UI對話框

<script src="http://code.jquery.com/jquery-1.8.3.js" type="text/javascript"></script> 
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js" type="text/javascript"></script> 

<script type="text/javascript"> 
    function GetProgramDetails(pgmname) { 

     var request = $.ajax({ 
      type: 'POST', 
      url: '/BatchPrograms/PopDetails', 
      data: { programName: pgmname }, 
      dataType: 'html' 
     }); 

     request.done(function (data) { 
      $('#data').dialog(); 
     }); 
</script> 

編輯

我已經更新了request.done功能,包括一個簡單的alert看到的,如果代碼被調用。在使用Chrome的調試器之後,我看到裏面的代碼完全被跳過了。

request.done(function (data) { 
    alert("HERE!"); 
     $('#programExplanation').html(data); 
    }); 

第二個編輯

這裏是控制器代碼的Ajax是從返回值:

[HttpPost] 
    public string PopDetails(string programName) 
    { 
     BatchPrograms batchprograms = db.BatchPrograms.Find(programName); 
     if (batchprograms == null) return string.Empty; 
     StringBuilder s = new StringBuilder(); 
     s.Append(batchprograms.ProgramName + " - " + batchprograms.ShortDescription); 
     s.Append("<br />Job Names: " + batchprograms.PrdJobName + ", " + batchprograms.QuaJobName); 
     s.Append("<br /> " + batchprograms.Description); 
     return s.ToString(); 
    } 
+0

嘗試我的新帖子。它會嘗試使用返回的數據js變量來打開一個對話框。並且交叉你的手指! – 2013-02-19 17:15:46

+0

請參閱我的新編輯 – 2013-02-19 17:41:06

+0

應該用新的代碼塊替換'var request ='還是'request.done',還是將其附加到? – NealR 2013-02-19 17:47:27

回答

2

您需要使用成功的方法來處理回調,像這樣:

var request = $.ajax({ 
     type: 'POST', 
     url: '/BatchPrograms/PopDetails', 
     data: { programName: pgmname }, 
     dataType: 'html' 
    }).success(function(data){ $('#data').dialog()}); 

這會爲您啓動對話框,但是如果您想要獲得對wo的響應數據RK有了它,你可以有GetProgramDetails採取這是數據加載像這樣經過回調第二個參數:在接收到響應

這種方式後
function GetProgramDetails(pgmname, callback) { 

    var request = $.ajax({ 
     type: 'POST', 
     url: '/BatchPrograms/PopDetails', 
     data: { programName: pgmname }, 
     dataType: 'html' 
    }).success(callback); 
} 

你可以處理如何處理的數據做你的執行回調,在這種情況下,您似乎將在對話框中設置數據並啓動對話框。

+0

他已經有了成功的功能:''.done''。 – doniyor 2013-02-13 19:39:29

+0

你是對的(我從來沒有用過done函數)。但通過向外部函數添加回調函數,可以更好地處理對話框中顯示數據的可能情況的響應。 – Brocco 2013-02-13 19:54:36

+0

使用你建議的'.success(callback)'方法,我試圖簡單地將這一行代碼添加到'GetProgramDetails()'函數:'$('#callback')。dialog();',它沒有工作。在Ajax調用之後使用'callback'的語法是什麼? – NealR 2013-02-13 20:43:05