ASP.NET,javascript AJAX的奇怪结果

ASP.NET, strange results from javascript AJAX

本文关键字:结果 AJAX NET javascript ASP      更新时间:2024-05-28

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

点击服务器端按钮可以调用CreateIsm(),得到票号为$('#output').html(a);的链接,但无法得到并将textarea值传递给空或空的票号详细信息。AJAX下成功功能中的警报消息成功

点击客户端按钮可以调用CreateIsm(),但无法获取票号链接,但可以获取并传递票号详细信息的textarea值。在AJAX下的成功函数中不会触发警报,我不知道为什么。有人知道为什么吗?

我希望结果是成功地从文本区域将信息传递到机票详细信息,并获得机票号码的链接。

这里有一个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>

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

另外,不要执行ScriptManager脚本附加。

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