我通过ajax文章设置一个TextBox控件的值.
$('#txtSite').val(msg.d.SiteName);
这是正常工作,TextBox的值正确更改.但是,当我将信息发布到数据库时,txtSite.Text值为空!
有任何想法吗?我生气了吗
$.ajax({ type:"POST",url: "MyPage.aspx/ValidateSite",data: "{ siteID: '" + $('#txtSiteID').val() + "' }",contentType: "application/json; charset=utf-8",dataType: "json",success: function(msg) { if (msg.d != null) { $('#txtSite').val(msg.d.SiteName); // It's definitely doing this } else { $('#txtSite').val(''); } },error: function(msg) { } });
代码保存到服务器(所有连接等是正确和正常工作).这个代码是在一个ASP按钮点击事件:
sqlCommand cmd = new sqlCommand("INSERT INTO [Sites] ([SiteName]) VALUES ('" + txtSite.Text + "')",conn); cmd.ExecuteNonQuery();
TextBox的定义如下:
<asp:TextBox ID="txtSite" runat="server" AutoComplete="off" TabIndex="4" MaxLength="50" Style="width: 230px" Enabled="false" CssClass="FormDisabledTextWithSmallHeight" />
我也试过改变我的JQuery来使用简单的Javascript,而这样做:
document.getElementById("txtSite").value = msg.d.SiteName;
仍然给我一个空值.
解决方法
您的文本框设置为Enabled =“false”,它在浏览器中显示为disabled =“disabled”.
Disabled form inputs are not submitted.
解决方案是使文本框启用和只读:
txtSite.Enabled = true; txtSite.Attributes.Add("readonly","readonly"); //on prerender event or somewhere else
或使用与runat =“server”不同的元素集,如< asp:HiddenField />并使用AJAX调用更新文本框和备用元素:
success: function(msg) { if (msg.d != null) { $('#txtSite').val(msg.d.SiteName); $('#hiddenInput').val(msg.d.SiteName); } else { $('#txtSite').val(''); } }