ASP.NET,javascript AJAX的奇怪结果

时间:2013-12-09 18:54:18

标签: c# javascript jquery asp.net ajax

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

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

单击客户端按钮可以调用CreateIsm(),但无法获取票号的链接,但能够获取并将textarea值传递给票证详细信息。在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 />

假设要发送到故障单详细信息

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

1 个答案:

答案 0 :(得分:1)

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

另外,不要附加ScriptManager脚本。

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