2016-03-18 110 views
0

我想在用戶上傳Web窗體中的文檔時將.aspx文件中的某些JavaScript變量值傳遞給.ashx文件。 Web表單是一個.aspx文件,上傳功能位於.ashx文件中。所以我需要將.aspx文件中的變量傳遞給.ashx文件。如何將javascript變量值從.aspx頁面傳遞給.ashx頁面

enter image description here

我能夠通過三個變量,但是當我試圖通過第四個則不起作用。它不會給出任何錯誤,但不會傳遞任何變量。當我調試代碼時,我可以看到調試器沒有進入上傳過程。和上傳按鈕也改變

enter image description here

這是我的.aspx頁面代碼。

<%@ Page Title="" Language="VB" MasterPageFile="~/_resx/E4.master" AutoEventWireup="true" CodeFile="new.aspx.vb" Inherits="E4_Jobs_new" ValidateRequest="false" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="Server"> 
    <script type="text/javascript"> 
     var id = '<%= ModeID%>', mode = '<%= Mode%>', employer = '<%= Employer.Name %>', jtitle = document.getElementById(<%= txtTitle.ClientID%>); 
    </script> 

<asp:RequiredFieldValidator runat="server" ControlToValidate="txtTitle" Display="None" ErrorMessage="xx" ValidationGroup="NewJob" EnableViewState="False" /> 
    <div class="form-element"> 
      <input type="text" id="txtTitle" runat="server" maxlength="64" /></div> 

      <div class="m-accor-body"> 
       <ul id="attachmentList"> 
        <% For Each additionalDoc As DataRow In Vacancy.Attachemnts.Rows%> 
        <li id="da<%= additionalDoc.Item("id") %>"> 
         <span><%= additionalDoc.Item("name") %></span> 
         <span class="rd" data-did="<%= additionalDoc.Item("id")%>"> remove</span> 
        </li> 
        <%Next%> 
       </ul> 
       <div id="queue"></div> 
       <input id="file_upload" name="file_upload" type="file"> 
      </div> 
</asp:Content> 

而且這是在.aspx文件,其中我傳遞變量到

$(function() { 

     dimNav('vacancy'); 

     $('#file_upload').uploadify({ 
      'buttonClass': 'button2', 
      'buttonText': 'Select a PDF or DOCX file to upload..', 
      'width': 250, 
      'fileTypeExts': '*.pdf; *.doc; *.docx', 
      'formData': { 
       'draftId': id, 
       'type': mode, 
       'employer': employer, 
       'jtitle': jtitle 

      }, 
      'uploadLimit': 6, 
      'swf': '/_resx/uploadify.swf', 
      'uploader': '/e4/jobs/upload-job-attachments.ashx', 
      'onUploadSuccess': function (file, data, response) { 
       $('#attachmentList').append('<li id="da' + data + '"><span>' + file.name + '</span><span class="rd" data-did="' + data + '"> remove</span></li>'); 
      } 
     }); 
    }); 

前三個變量的值比第四個不同的方式獲得.ashx的文件中的代碼。在第四個中,我使用javascript函數來獲取值(因爲它是用戶給出的輸入值,而不是已經存儲在數據庫中的值)。

這是我在上載作業attachments.ashx文件代碼,我檢索值

Public Class upload_job_attachments : Implements IHttpHandler 

Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest 
    context.Response.ContentType = "text/plain" 
    context.Response.Expires = -1 
    Try 

     Dim Id As Integer = CInt(context.Request("draftid")) 
     Dim type As String = CStr(context.Request("type")) 
     Dim empname As String = CStr(context.Request("employer")) 
     Dim postedFile As HttpPostedFile = context.Request.Files("Filedata") 

      ********** other lines of code *********** 

    End Sub 
End Class 

我能做些什麼來解決這個問題。我在高級javascript功能方面很弱。我感謝你的幫助


加成

整個腳本看起來像

 $(function() { 
     dimNav('vacancy'); 

     var jobTitle = $('#' + '<%= txtTitle.ClientID%>').val(); 

     $('#file_upload').uploadify({ 
      'buttonClass': 'button2', 
      'buttonText': 'Select a PDF or DOCX file to upload..', 
      'width': 250, 
      'fileTypeExts': '*.pdf; *.doc; *.docx', 
      'formData': { 
       'draftId': id, 
       'type': mode, 
       'employer': employer, 
       'jtitle': jobTitle 

      }, 
      'uploadLimit': 6, 
      'swf': '/_resx/uploadify.swf', 
      'uploader': '/e4/jobs/upload-job-attachments.ashx', 
      'onUploadSuccess': function (file, data, response) { 
       $('#attachmentList').append('<li id="da' + data + '"><span>' + file.name + '</span><span class="rd" data-did="' + data + '"> remove</span></li>'); 
       alert($('#' + '<%= txtTitle.ClientID%>').val()); 
      } 
     }); 

     $('body').on('click', '.rd', function() { 
      var el = $(this); 
      $.post('delete-job-attachment.ashx?id=' + el.attr('data-did'), '{}', function() { 
       $('#da' + el.attr('data-did')).remove(); 
      }); 
     }); 


     $('.price-button').click(function() { $(this).next('.price-list').fadeToggle('slow'); }); 

     $('.m-lists table tr:nth-child(4) td:nth-child(1)').prepend('<div>Multiple job posting</div>'); 

     $('.jMedias').change(function() { 
      suffleMedias(); 
     }); 

     var suffleMedias = function() { 
      var mids = []; 
      $('.jMedias:checked').each(function() { 
       mids.push($(this).val()); 
      }); 
      $('.mediaLists').val(mids.toString()); 
     }; 


     $('.jType').change(function() { 
      suffleJobType(); 
     }); 


     $('input:radio.p-option-radio').change(function() { 
      var pOption = $(this).val(); 
      $('.p-option').val(pOption); 
     }); 

     var suffleJobType = function() { 
      var type = $('.jType').val(); 
      if (type == 0) { 
       $('#contractLength, #jobHour').slideUp(); 
      } else if (type == 1) { 
       $('#jobHour').slideDown(); 
       $('#contractLength').slideUp(); 
      } else if (type == 2) { 
       $('#jobHour').slideDown(); 
       $('#contractLength').slideUp(); 
      } else if (type == 3) { 
       $('#contractLength, #jobHour').slideDown(); 
      } 

     }; 

     var suffleFeeType = function() { 
      var fType = $('.feeType').val(); 

      if (fType == 0) { 
       $('#salaryRateMax, #salaryRateMin, #agencyFee').slideDown(); 
      } else if (fType == 1) { 
       if (parseFloat($('.referrerPercentage option:selected').text()) > 0) { 
       } else { 
        $('#salaryRateMax, #salaryRateMin').slideUp(); 
       } 
       $('#agencyFee').slideDown(); 
      } else if (fType == 2) { 
       $('#agencyFee').slideUp(); 
       if (parseFloat($('.referrerPercentage option:selected').text()) > 0) { 
       } else { 
        $('#salaryRateMax, #salaryRateMin').slideUp(); 
       } 
      } 
     }; 

     $('.feeType').change(function() { 
      suffleFeeType(); 

     }); 
     $('.referrerPercentage').change(function() { 
      if (parseFloat($('.referrerPercentage option:selected').text()) > 0) { 
       $('#salaryRateMax, #salaryRateMin').slideDown(); 
      } else { 
       if ($('.feeType').val() == 1) { 
        $('#salaryRateMax, #salaryRateMin').slideUp(); 
       } 
      } 
     }); 


     $('.calcFee').change(function() { 
      CalculateAndDisplayFees(); 
     }); 


     $('.rAgency').chosen().change(function() { 
      if ($(this).val() != '-1') { 
       $('.psls').val('-1').trigger("liszt:updated"); 
       $('.retained').val('1'); 
      } 
     }); 

     $('.psls').chosen().change(function() { 
      if ($(this).val() != '-1') { 
       $('.rAgency').val('-1').trigger("liszt:updated"); 
       $('.retained').val('0'); 
      } 
     }); 


     var setPublishOption = function() { 
      var p = $('.p-option').val(); 
      var $radios = $('input:radio.p-option-radio'); 
      $radios.filter('[value=' + p + ']').attr('checked', true); 
     }; 


     suffleJobType(); 
     suffleFeeType(); 
     suffleMedias(); 
     CalculateAndDisplayFees(); 
     setPublishOption(); 
    }); 

回答

1

如果,例如,jtitle領域需要來自輸入控制,你可以這樣做:

'formData': { 
    'jtitle': $("#somecontrol").val() 
} 

這將從控件中獲取值。你是這個意思嗎?

+0

#somecontrol有些控制意味着輸入ID? – Bashabi

+0

是在客戶端上呈現的輸入的ID。在Web表單中,您也可以使用'<%= servercontrol.ClientID%>'來引用該服務器控件的客戶端呈現。 –

+0

'formData':{'jtitle':$('#<%= txtTitle.ClientID%>')。val()} - 我用這行代碼來傳遞值。感謝你,我沒有錯誤。但是當我調試ashx文件中的代碼..該值等於什麼。但是我在輸入字段輸入了一個值。仍然顯示價值爲沒有 – Bashabi

相關問題