【问题标题】:How to pass javascript variable value from .aspx page to .ashx page如何将javascript变量值从.aspx页面传递到.ashx页面
【发布时间】:2016-03-18 11:16:24
【问题描述】:

当用户在 Web 表单中上传文档时,我正在尝试将一些 JavaScript 变量值从 .aspx 文件传递​​到 .ashx 文件。 Web 表单是一个 .aspx 文件,上传功能在 .ashx 文件中。所以我需要将 .aspx 文件中的变量传递给 .ashx 文件。

我能够传递三个变量,但是当我尝试传递第四个变量时,它就不起作用了。它不会给出任何错误,只是不传递任何变量。当我调试代码时,我可以看到调试器没有进入上传过程。而且上传按钮也变了

这是我的 .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>

这是我将变量传递到 .ashx 文件的 .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>');
            }
        });
    });

前三个变量的值与第四个不同。在第四个中,我使用 javascript 函数来获取值(因为它是用户给出的输入值。不是已经存储在数据库中的值。)。

这是我在 upload-job-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();
    });

【问题讨论】:

    标签: javascript jquery asp.net vb.net ashx


    【解决方案1】:

    例如,如果 jtitle 字段需要来自输入控件,您可以这样做:

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

    它将从控件中获取值。是这个意思吗?

    【讨论】:

    • #somecontrol somecontrol 是指输入的id吗?
    • 是在客户端上呈现的输入的 ID。在 Web 表单中,您还可以使用 &lt;%= servercontrol.ClientID %&gt; 来引用该服务器控件的客户端呈现。
    • 'formData': { 'jtitle': $('#').val() } - 我使用这行代码来传递值。多亏了你,我没有得到任何错误。但是当我调试 ashx 文件中的代码时.. 值等于什么。但我在输入字段中输入了一个值。仍然显示该值没有
    • 看起来是正确的。需要一些调试;只是为了测试,我会尝试在调用 uploadify 之前将其放在:alert($('#&lt;%= txtTitle.ClientID%&gt;').val()); 并查看警报标识它是空的,还是没有发送到服务器。
    • onUploadSuccess': function (file, data, response) { alert($('#' + '').val());} - 我输入了这个行来检查。警报标识输入值。但仍然在 .ashx 文件中,我没有得到任何值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多