我有一个搜索页面电话"公司"当用户输入关键字并点击"搜索"它将调用一些函数在文件" companiesdatagrid"中显示搜索结果。
现在,我在companiesdatagrid.ascx文件中创建了一个简单的下拉列表:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:DropDownList ID="DropDownList1" Width="200px" runat="server" DataTextField="ItemTypeName" DataValueField="ItemTypeId"
onchange = "CallServerMethod(this)" ValidationGroup="vgLibItem" >
</asp:DropDownList>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="DropDownList1" EventName="SelectedIndexChanged" />
</Triggers>
我希望它调用一个将调用函数
的Java Script函数public void DropDownList1sel(object sender, EventArgs e)
代码隐藏文件中的(CompaniesDatagrid.ascx.cs) 但是,我将测试一个简单的案例,在代码后面调用一个简单的函数:
public void add()
{
int a = 1;
int b = 3;
int c = a + b;
}
在page_load函数(文件CompanniesDatagrid.ascx.cs)中我有:
protected void Page_Load(object sender, System.EventArgs e)
{
// clear the javascript literal
this.responseLiteral.Text = "";
if (!Page.IsPostBack)
{
if (Request.Form["Method"] == "Add")
{
add();
return;
}
}
在companiesdatagrid.ascx中我有这个Java脚本:
<script type="text/javascript">
function CallServerMethod() {
alert("changed");
var dataToSend = { Send1: 'Value1', Send2: 'Value2', Method: 'Add' };
var opts =
{
url: 'companiesdatagrid.ascx',
//url: 'companies.ascx',
//url: 'CompaniesDatagrid.ascx.cs',
//url: 'companies.ascx.cs'
//url: 'companiesdatagrid.ascx/add',
//url: 'CompaniesDatagrid.ascx.cs/add',
//url: 'CompaniesDatagrid.aspx/add',
//url: 'DesktopDefault.aspx?tabindex=2&tabid=15/add',
data: dataToSend,
dataType: 'JSON',
type: 'POST',
success: function (response) {
//Do something here if successful
alert('success');
},
error: function () {
alert('failure');
}
}
$.ajax(opts);
alert("changed 2");
}
</script>
它只会显示警告&#34;已更改&#34;然后&#34;改变2&#34;然后&#34;失败&#34;。我从来没有获得成功警报,这意味着我从来没有在成功的代码中调用add()函数!?请注意,我在网址上注释了所有注释并得到了相同的结果! 如何在这里正确实现?我真的不在意,请帮忙! 谢谢!
答案 0 :(得分:2)
首先更改网址并检查它是否未达到适当的资源, 然后检查数据是否正确..
var dataToSend = { Send1: 'Value1', Send2: 'Value2', Method: 'Add' };
var opts =
$.ajax({
type: "POST",
url: "companiesdatagrid.ascx/methodname to be called",
data: dataToSend ,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
alert('sucess');
},
error: function() {
alert("error");
}
});