2013-07-26 30 views
2

我有一個jQuery UI對話框,其上有一個單選按鈕列表。我需要調用服務器端方法,當用戶單擊確定,我需要傳遞選定的值。我試着通過調用ajax方法並將選定的值作爲參數傳遞。這很好(值已通過),但我無法從方法中訪問cookie(出現錯誤 - 請求在此上下文中不可用),這是有意義的,因爲這是ajax請求。下面是代碼:在代碼中獲取jQuery UI對話框的值

$("#dialogReject").dialog({ 
      autoOpen: false, 
      height: 300, 
      width: 350, 
      modal: true, 
      buttons: { 
       "Reject": function() { 
        var value = $(this).find('input:checked').val(); 
        $.ajax({ 
         type: "POST", 
         contentType: "application/json; charset=utf-8", 
         url: "/myPage.aspx/RejectDocumentWM", 
         data: "{'rejectReason':'" + value + "'}", 
         dataType: "json", 
         success: function (data) { 
          alert('success'); 
         }, 
         error: function (result) { alert('error'); } 
        }); 
        $(this).dialog('close'); 
       }, 
       Cancel: function() { 
        $(this).dialog("close"); 
       } 
      } 
     }); 

RejectDocument():

[WebMethod] 
    public static void RejectDocumentWM(string rejectReason) 
    { 
     MyNamespace.myPage page = new MyNamespace.myPage(); 
     page.RejectDocument(rejectReason); 
    } 

protected void RejectDocument(string rejectReason) 
    { 
     batch batch = (batch)Session["Batch"]; 
     if (client.RejectDocument(batch.GetCurrentDoc().icn, rejectReason, Request.Cookies["username"].Value)) //here is where I get the error 
     { 
      NextDocument(); 
     } 
    } 

我試圖通過將值轉換成一個隱藏字段,然後調用一個按鈕,點擊它調用服務器端的方法做這件事。我的問題在於隱藏字段的值始終爲空,即使它在客戶端腳本中正確設置。這裏是代碼爲:

  $("#dialogReject").dialog({ 
      autoOpen: false, 
      height: 300, 
      width: 350, 
      modal: true, 
      buttons: { 
       "Reject": function() { 
        var value = $(this).find('input:checked').val(); 
        $('[id$="hdfRejectReason"]').val(value); //this sets properly 
        $('[id$="btnRejectDoc"]').click(); 
        $(this).dialog('close'); 
       }, 
       Cancel: function() { 
        $(this).dialog("close"); 
       } 
      } 

protected void btnRejectDoc_Click(object sender, EventArgs e) 
    { 
     batch batch = (batch)Session["Batch"]; 
     if (client.RejectDocument(batch.GetCurrentDoc().icn, hdfRejectReason.Value, Request.Cookies["username"].Value)) 
//hdfRejectReason.Value is blank 
     { 
      NextDocument(); 
     } 
    } 

任何想法對我?我不知道該怎麼做。 謝謝!

回答

1

首先,這個hf是在'popup'還是'主頁'部分?

其次,計算器,我們discused並設置其他(更好?)的方式jQuery中設置隱藏字段的值:

<div class="hfFoo-wrap"> 
     <asp:HiddenField runat="server" ID="hfFoo" /> 
    </div> 

function FooBarFunction() { 
    var hfFoo = $('.hfFoo-wrap input[type=hidden]'); 
    hfFoo.val('Bar'); 
    var isBar = hfFoo.val(); 
} 

也許在btnRejectDoc_Click有其他的「空」或「空白」 PARAMS?

第三:我用'aspx'頁面和'回調代理'預先設置FrameDialog。

  1. 的jQuery從「ASPX,彈出」爲「關閉彈出窗口」(jQuery.FrameDialog創建彈出的「ASPX頁面
  2. 從「主頁」打開彈出作爲jQuery.FrameDialog
  3. 關閉對話框。 closeDialog();)
  4. 在「主頁」抓回調委託(從彈出PARAMS),並設置隱藏字段有
+0

我沒有問題設定值 - 它設置正確。我在設置值並顯示適當的值後發出警報。問題是背後的代碼無法識別設置的值。不,我沒有任何其他參數。 – ploni

+1

此hf在'popup'或'主頁'部分? – zchpit

+0

它彈出。我把它移到了主頁面上,現在它可以工作。謝謝你指出我的方向。如果你把它作爲答案(hf需要在主頁面中),我會標記它。再次感謝! – ploni