通过JQuery设置文本框值

我通过ajaxpost设置TextBox控件值。

 $('#txtSite').val(msg.d.SiteName); 

这是有效的, TextBox的值被正确更改。 但是,当我将信息发布到数据库时, txtSite.Text值为空!

有任何想法吗? 我疯了吗?

用于填充TextBox代码:

 $.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的定义如下:

  

我也试过改变我的JQuery来使用普通的Javascript而不是这样做:

 document.getElementById("txtSite").value = msg.d.SiteName; 

仍然给我一个空值。

您的文本框设置为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(''); } } 

是的,我绝对认为,你的文本框应该在html代码中有一个name属性,检查它。 没有’name’属性,浏览器不会将此输入框的数据发布到服务器,因此您不会在服务器端c#代码中获取它。 希望,这是有道理的..