客户端数据到服务器端
问题描述:
我想使用JavaScript弹出框(提示)在我的网站上获取一些用户输入,然后根据用户的操作在服务器端执行一些更多操作。客户端数据到服务器端
弹出框是缺少单词弹出。
以下是我曾尝试使用此代码:
<div>
<asp:HiddenField ID="hidden" runat="server" />
</div>
<script>
function userInput() {
var reason = prompt("Enter reason for deleting:", "");
//User pressed okay but didn't type anything
while (reason == "") {
//Keeps cycling until reason given or cancel is hit
reason = prompt("Enter reason for deleting:", "");
}
if (reason != "" && reason != "Code:CancelDelete") {
//User typed something and hit okay
document.getElementById('hidden').innerHTML = reason.toString();
$('#deleteReason').val(reason.toString());
$("#hidden").val(reason.toString());
}
else {
//User hits cancel
document.getElementById('hidden').nodeValue = "Code:CancelDelete";
}
}
</script>
脚本中的while循环适用于什么,我需要做的。我可以告诉的问题是试图设置HiddenField的值。我曾尝试以下方法:
- 的innerHTML
- 的innerText
- 的nodeValue
虽然寻找到这一点,我已经看到.value的使用了很多,并没有尝试过自己,但是当我去键入document.getElementById('hidden')。value =,没有弹出选项或说明。值。
我测试了服务器端代码,所以我知道这是有效的。这一切都归结为获取用户输入。无论哪种方式,这里是从C#代码摘录:
string deleteReason = hidden.Value;
//string deleteReason = test.InnerHtml.ToString();
if (deleteReason.Equals("Code:CancelDelete"))
{
}
else if (!deleteReason.Equals("Code:CancelDelete") && !deleteReason.Equals(""))
{
或多或少地在这一个损失。
更新1: 这里是在客户端浏览器(Firefox)的隐藏字段生成的HTML代码:
<input name="ctl00$IndividualPageContent$hidden"
id="IndividualPageContent_hidden" type="hidden">
答
您正在尝试设置与ID隐藏元素”的价值',但这不是你隐藏输入的标识。
正确的ID是'IndividualPageContent_hidden'。
这样设置的值,而不是:
document.getElementById('IndividualPageContent_hidden').value = 'Your value here';
答
当你键入网页表单元素的ID的asp.net给它基于一些东西(你的形式,你的中继器,等一个唯一的ID .. )
如果你想使用带有这个ID的jQuery,你可以使用ClientId prop。
事情是这样的:
if (reason != "" && reason != "Code:CancelDelete") {
//If your server id= "hidden"
ele = $("#<%= hidden.ClientID %>");
ele.html() = reason.toString();
...
}
另一种方法是静态ID添加到您的服务器的元素,然后你的代码将工作是。 (html的将ID呈现=隐藏)
的ClientIDMode = “静态”
<div>
<asp:HiddenField ID="hidden" runat="server" ClientIDMode="static"/>
</div>
什么是隐藏字段的实际客户端HTML? – David
@David显示我定义隐藏字段的那一点点是我对它的唯一位。 – TGills
查看生成的实际客户端HTML。 JavaScript代码将与浏览器中的HTML进行交互,而不是ASP.NET服务器端代码。 – David