我正在创建一个asp.net Web应用程序,我想知道如何在javascript中调用代码隐藏方法。以下Java脚本显示获取具有相同名称的多个文本框的值到数组中。
使用代码隐藏方法,我尝试传递数组的值,但它没有工作。当我使用警告框时,它显示文本框值。
function JavaScriptFunction() {
var arr = $("input[name='multiple[]']");
$.each(arr, function (i, item) {
alert($(item).val());
});
}
当我在警告框方法之前调用代码后方法时,它不会显示任何消息框。 (测试方法背后的代码)
function JavaScriptFunction() {
var arr = $("input[name='multiple[]']");
$.each(arr, function (i, item) {
PageMethods.setemail("Paul Hayman");
alert($(item).val());
});
}
这是我的测试代码方法。 TextBox1我用于测试。
[WebMethod]
public void setemail(string p)
{
TextBox1.Text = p;
}
然后我最后导入webService引用。
using System.Web.Services;
这是我使用webforms按钮
<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="JavaScriptFunction()" OnClick="Button1_Click" />
答案 0 :(得分:3)
WebMethod无法直接与DOM进行交互。 WebMethods不在普通页面模型的范围内。
事实上,MS的WebMethod是no longer supported,你不应该使用它。相反,如果您使用的是.NET 4.5,您可以创建一个Web API并使用AJAX调用它(jQuery有很好的辅助函数,我看到你标记了它)。 Web API将返回字符串,然后您可以使用JavaScript来设置文本框的文本。
Web API
public class TestController : ApiController
{
public string GetHello(string name)
{
return String.Format("Hello, {0}!", name);
}
}
然后是jQuery AJAX代码:
$.ajax({
url: '/api/test/GetHello?name=Nade',
type: 'GET'
})
.success(function(output){
$('#TextBox1').val(output);
});
如果您不在.NET 4.5上,请升级!如果无法升级,那么您可以设置一个通用处理程序(.ashx
)并写入响应。