通过JQuery设置文本框值
我正在通过ajax帖子设置一个通过JQuery设置文本框值,jquery,asp.net,Jquery,Asp.net,我正在通过ajax帖子设置一个文本框控件值 $('#txtSite').val(msg.d.SiteName); 这正在工作,文本框的值已正确更改。但是,当我将信息发布到数据库时,txtSite.Text值是空的 有什么想法吗?我疯了吗 填充文本框的代码: $.ajax({ type:"POST", url: "MyPage.aspx/ValidateSite", data: "{ siteID: '" + $('#txtSiteID').val() + "' }",
文本框
控件值
$('#txtSite').val(msg.d.SiteName);
这正在工作,文本框
的值已正确更改。但是,当我将信息发布到数据库时,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();
文本框的定义如下:
<asp:TextBox ID="txtSite" runat="server" AutoComplete="off" TabIndex="4" MaxLength="50" Style="width: 230px" Enabled="false" CssClass="FormDisabledTextWithSmallHeight" />
仍然返回空值。是的,我肯定认为,您的文本框在html代码中应该有name属性,请检查它。如果没有“name”属性,浏览器将不会将此输入框的数据发布到服务器,因此无法在服务器端c#代码中获取数据。希望,这是有意义的。您将文本框设置为Enabled=“false”
,在浏览器中以disabled=“disabled”
呈现
解决方案是启用文本框并使其只读:
txtSite.Enabled = true;
txtSite.Attributes.Add("readonly", "readonly"); //on prerender event or somewhere else
或者在runat=“server”
中使用不同的元素集,如
,并使用AJAX调用更新文本框和备用元素:
success: function(msg) {
if (msg.d != null) {
$('#txtSite').val(msg.d.SiteName);
$('#hiddenInput').val(msg.d.SiteName);
} else {
$('#txtSite').val('');
}
}
#txtSite
是否具有名称
属性?@austinbrunkhost,是否需要名称属性?我有它的ID
。我会试试看。@kad1r:我发布的不是JQuery。JQuery post从数据库获取值并填充文本框。它正确地填充了文本框,但是当我使用CSharp代码保存数据时,textbox.Text
属性为空。您说您正在执行textbox.Text
。给我们看看你所有的代码。呃,等等,你发布的代码不相关。向我们显示提交表单的代码。我怀疑这是VIEWSTATE没有返回到服务器的问题。我将要求您共享您的.aspx文件代码(主要关注哪一部分)以及后端c#代码完整功能,以便我们能够以良好的方式进行查看。谢谢。我尝试过将字段设置为只读
,但还是失败了。昨天早上,我实现了HiddenField
解决方案作为一种变通方法。
success: function(msg) {
if (msg.d != null) {
$('#txtSite').val(msg.d.SiteName);
$('#hiddenInput').val(msg.d.SiteName);
} else {
$('#txtSite').val('');
}
}