我正在使用json在我的应用程序后面的代码中运行一个函数。一切正常,除了我无法弄清楚如何将隐藏字段传递给它这里是我的jquery代码:
$(document).ready(function () {
$("input[id$='btnP']").click(function (e) {
var hiddenfield= $("#<%=hidden.UniqueID%>"); //This Does not work!!!!!
$.ajax({
type: "POST",
url: "MyDoc.aspx/BtnOpen",
data: "{'message': '" + hidden.val() + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
if (msg.d == 'Sent') {
}
else {
}
}
});
e.preventDefault();
});
编辑:::
我的隐藏字段在gridview中如此:
<asp:TemplateField HeaderText="View">
<ItemTemplate>
<input type="submit" value="Send" id="btnP" runat="server" />
<asp:HiddenField runat="server" ID="hidden" Value='<%# Eval("ID" )%>' />
</ItemTemplate>
</asp:TemplateField>
答案 0 :(得分:2)
var hiddenfield= $("# ...
和
hidden.val()
该变量不称为hidden
。
答案 1 :(得分:2)
你应该这样做
$(document).ready(function () {
$("input[id$='btnP']").click(function (e) {
var hiddenfieldValue = $("#<%=hidden.ClientID %>").val(); //This works!!!!!
$.ajax({
type: "POST",
url: "MyDoc.aspx/BtnOpen",
data: {"message": hiddenfieldValue},
contentType: "application/json; charset=utf-8",
dataType: "json",
...
});
e.preventDefault();
});
答案 2 :(得分:2)
有几个选项可以采用隐藏字段值:
1)您可以将隐藏字段的ClientIDMode属性设置为静态
<asp:HiddenField runat="server" ID="hidden" ClientIDMode="Static" Value="yourValue"/>
然后您可以使用以下代码:
var hiddenField = document.getElementById('hidden');
....
hiddenField.value
2)使用ClientID属性:
var hiddenField = $("#<%=hidden.ClientID %>");
...
hiddenField.val();
了解ClientID与UniqueID here
之间的区别<强> UPD。强>
如果需要将某些参数从GridView传递给函数,则不能使用HiddenField:
只需从输入中删除“server”标记,然后添加onclick事件即可。
<asp:TemplateField HeaderText="View">
<ItemTemplate>
<input type="submit" value="Send" id="btnP" onclick="BtnOpen('<%# Eval("ID" ) %>');" />
</ItemTemplate>
</asp:TemplateField>
而不是添加你的功能:
<script>
function BtnOpen(id) {
$.ajax({
type: "POST",
url: "MyDoc.aspx/BtnOpen",
data: "{'message': '" + id + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
if (msg.d == 'Sent') {
}
else {
}
}
});
}
</script>