【问题标题】:ASP.NET, strange results from javascript AJAXASP.NET,来自 javascript AJAX 的奇怪结果
【发布时间】:2013-12-09 18:54:18
【问题描述】:

我正在测试 2 种方法(服务器端和客户端)调用 javascript AJAX 将票证发布到网站,然后获取票证号链接以进行跟踪/编辑/等$('#output').html(a);。然而他们都得到了不同的结果。

单击的服务器端按钮可以调用CreateIsm() 并获得票号$('#output').html(a); 的链接,但无法获取文本区域值并将其传递给它为空或为空的票证详细信息。 AJAX下success函数的alert消息成功

单击的客户端按钮可以调用CreateIsm(),但无法获取票号链接,但能够获取文本区域值并将其传递给票证详细信息。在 AJAX 下的成功功能中不会触发警报,我不知道为什么。有人知道为什么吗?

我希望结果是成功将信息从 textarea 传递到票务详细信息并获得票号链接。

这里是一个javascript函数,

<script>

    // global variables
    id = '<%= AD.NEAt.GetUserID().ToString() %>';
    notes = '';
    ismClassId = '';
    caseType = '';
    l1 = '';
    l2 = '';
    l3 = '';


      // Create ISM Ticket
   $('#ButtonRequest').click(function () {

     //var textBox = document.getElementById('<%=txt.ClientID %>'); //This Freeze
    //var textBox = document.getElementById('#txt'); //does not appear in ticket detail
    //var textBox = $('<%=txt.ClientID %>').val(); //does not appear in ticket detail
    //var textBox = "Please add the following DNS entries\n"; appear in ticket detail

        ismClassId = 'DOW31038';
        caseType = 'Request';
        l1 = 'Request';
        l2 = 'Network';
        l3 = 'Static IP Address';

        //This one worked for client side. To get ip and name!
        notes = $('#txt').val();

        $.support.cors = true;
        $.ajax({
            type: "POST",
            url: "http://servername/Common/Components/ISM/SubmissionPage.aspx",
            data: {
                'Form_ID': '08.01.7',
                'ISM_Class_ID': ismClassId,
                'Case_Type': caseType,
                'Level_1': l1,
                'Level_2': l2,
                'Level_3': l3,
                'Case_Notes': notes,
                'Contact_ID': id
            },
            success: function (data) {
                //console.log(data);
                alert("success function called");
                var str = data;
                var ticket = $(str).find("#ticketIDOutput").val();
                var hreff = "http://servername/Form/SRApproval/SRApproval.aspx?ticketID=" + ticket;
                var a = "<a href='" + hreff + "' target='blank'>" + ticket + "</a> created."
                $('#output').html(a);

            },
            error: function (jqXHR, textStatus, errorThrown) {

                $('#output').html("Error creating ISM ticket: " + textStatus + " - " + errorThrown);
            }
        });

    });  

</script>

当用户点击按钮时,C#服务器端执行,

protected void ButtonRequest_Click(object sender, EventArgs e)
    {
       //more codes above
 //ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "call", "<script>CreateIsm();</script>", false);
}

ASPX 客户端在用户点击按钮时触发,

<asp:Button ID="ButtonRequest" runat="server" onclick="ButtonRequest_Click" OnClientClick="return false" UseSubmitBehavior="false"
            Text="Request" Visible="False" style="height: 26px" />
        <br />

假设要发送到票务详细信息的文本区域,

<asp:TextBox ID="txt" runat="server" visible="False" TextMode="MultiLine" 
            Width=356px Height=200px style="margin-left: 0px"></asp:TextBox>

【问题讨论】:

    标签: c# javascript jquery asp.net ajax


    【解决方案1】:

    $(str).find() 我认为这行没有任何意义。就在上面你做了 var str = data...你为什么要在页面上寻找一个名为 data/str 的项目???

    另外,不要附加 ScriptManager 脚本。

    在按钮上设置 OnClientClick="return false" 以防止回发,然后在 jQuery 中使用 $(button).click() 来执行 AJAX。

    【讨论】:

    • 您的意思是在CreateIsm() 内创建$(button.click() 并在$(button.click() 内拥有AJAX 功能?
    • 没有。销毁 CreateIsm()。像这样写: $('#ButtonRequest').click(function(){ //这里 CreateIsm 里面的东西 });
    • 我试过了。单击时它根本不会触发任何东西。然后我删除了 OnClientClick="return false"。仅触发了 C# 服务器端按钮,但未触发 $("#ButtonRequest'").click(function()
    • 这意味着你有一个拼写错误,$("#ButtonRequest'") 已经有太多引号了。使用单引号 $('#ButtonRequest') 更容易看到。保持 OnClientClick="return false"。
    • 我做到了。还是不触发。我根据您的示例编辑了上面的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多