将字符串列表从Javascript传递到asp.net代码
我在ASP.NET中遇到javascript问题。将字符串列表从Javascript传递到asp.net代码,javascript,asp.net,Javascript,Asp.net,我在ASP.NET中遇到javascript问题。 我使用javascript使用添加和删除命令修改列表框。 现在我必须使用代码隐藏中列表的数据。如何将此数据传递到服务器?我可以使用json吗 这是代码。由于删除,我无法使用hiddenField <asp:listbox ID="SubCat" runat="server" ></asp:listbox> <input type=button onClick="addOption(SubCat)"; value='
我使用javascript使用添加和删除命令修改列表框。
现在我必须使用代码隐藏中列表的数据。如何将此数据传递到服务器?我可以使用json吗 这是代码。由于删除,我无法使用hiddenField
<asp:listbox ID="SubCat" runat="server" ></asp:listbox>
<input type=button onClick="addOption(SubCat)"; value='Add'>
<input type=button onClick="removeOptions(SubCat)"; value='Remove Selected'>
<input type=button onClick="removeAllOptions(SubCat)"; value='Remove All'>
<script type="text/javascript">
function removeAllOptions(selectbox) {
var i;
for (i = selectbox.options.length - 1; i >= 0; i--) {
selectbox.remove(i);
}
}
function removeOptions(selectbox) {
var i;
for (i = selectbox.options.length - 1; i >= 0; i--) {
if (selectbox.options[i].selected)
selectbox.remove(i);
}
}
function addOption(selectbox) {
var txtBox1 = document.getElementById('txForn')
var optn = document.createElement("OPTION");
var t = txtBox1.value;
optn.text = t;
optn.value = t;
selectbox.options.add(optn);
}
</ script>
功能删除分配选项(选择框){
var i;
对于(i=selectbox.options.length-1;i>=0;i--){
选择框。删除(i);
}
}
功能移除选项(选择框){
var i;
对于(i=selectbox.options.length-1;i>=0;i--){
如果(selectbox.options[i].选中)
选择框。删除(i);
}
}
函数addOption(选择框){
var txtBox1=document.getElementById('txForn')
var optn=document.createElement(“选项”);
var t=txtBox1.0值;
optn.text=t;
optn.value=t;
选择框。选项。添加(optn);
}
标记您需要向服务器发出AJAX请求。请参见下面的示例
它利用POST,您可以将表单中的字段发送到服务器方法。此外,POST还提供了一个成功函数,例如,如果您的方法返回一个值,并且您需要在页面上显示它,那么在这个成功函数中,您可以处理它
假设您对服务器端代码behidn文件具有以下方法:
public static bool AddNewItem(string name, string surname, int age)
{
return true;
}
buttons:
{
"Add": function () {
var name = $("#<%= txtName.ClientID %>").val();
var surname = $("#<%= txtSurname.ClientID %>").val();
var age = $("#<%= txtAge.ClientID %>").val();
$.ajax({
type: 'POST',
url: 'MyWebPage.aspx/AddNewItem',
data: '{"name":"' + name + '", "surname":"' + surname + '", "age":' + age + '}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
if (msg.d) {
alert("Successfully added new item");
}
},
error: function () {
alert("Error! Try again...");
}
});
},
"Cancel": function () {
$(this).dialog("close");
}
}
公共静态bool AddNewItem(字符串名称、字符串姓氏、整数年龄)
{
返回true;
}
按钮:
{
“添加”:函数(){
变量名称=$(“#”)val();
变量姓氏=$(“#”)val();
变量年龄=$(“#”)val();
$.ajax({
键入:“POST”,
url:'MyWebPage.aspx/AddNewItem',
数据:“{”姓名“:”+姓名+”,“姓氏“:”+姓氏+”,“年龄“:”+年龄+”},
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:功能(msg){
如果(msg.d){
警报(“已成功添加新项目”);
}
},
错误:函数(){
警报(“错误!重试…”);
}
});
},
“取消”:函数(){
$(此).dialog(“关闭”);
}
}
为什么不能使用隐藏?您可以轻松地存储列表框中添加或删除的项目记录的ID,并更新服务器。您的其他选项是web服务,或者将数据流传输到处理程序
无论是哪种选项,任何客户端更改都不会持久化,因此在每次回发时,您都必须使用更新的数据重新加载ListBox控件。您只需创建一个web服务并添加一个方法,例如DeleteSelectedOptions并更改removeOptions功能,如下所示:
function removeOptions(selectbox) {
$.ajax({
type: 'POST',
url: 'yourservice.asmx/DeleteSelectedOptions',
data: "{ids: '" + yourIds + "'}", // yourIds like : "1,6,9,34"
contentType: "application/json; charset=utf-8",
dataType: 'json',
success: function (result) {
//if success, remove option on page
var i;
for (i = selectbox.options.length - 1; i >= 0; i--) {
if (selectbox.options[i].selected)
selectbox.remove(i);
}
},
failure: function(errMsg) {
alert(errMsg);
}
});
}
示例Web服务删除.asmx
[WebMethod]
public string DeleteSelectedOptions(string ids)
{
string[] idsArray = ids.Split(',')
// your delete codes
return result;
}