AJAX响应是原始的HTML

时间:2014-02-10 20:40:37

标签: c# jquery html ajax

我正在使用AJAX填充一些级联组合框,如下图所示:

enter image description here

当在组合框中选择一个选项时,它应该填充“Municipio”组合框,做这样的事情我用AJAX调用一个名为CargarCombos的方法(int intAccion,string strCodigo),这个方法接收下一个信息:

enter image description here

但问题在于从AJAX方法接收响应时,它似乎没有调用前面提到的方法,而且最重要的是它只响应页面包含的相同HTML源代码,在这里看到:

enter image description here

如果你们能帮助我,我会非常感激。感谢。

编辑:

根据建议我正在添加AJAX命令和WEBMethod:

AJAX:

    $.ajax({
            type: "POST",
            url: pageUrl + '/CargarCombos',
            data: '{intAccion: ' + $Accion + ', strCodigo: ' + JSON.stringify($ComboBox.val()) + ' }',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(response) {
                PopularControl(response.d, $control);
            },
            failure: function(response) {
                alert(response.d);
            }
        });

WEBMETHOD:

[WebMethod()]
public static ArrayList CargarCombos(int intAccion, string strCodigo)
{
    ArrayList list = new ArrayList();

    ////LLamo a las variables necesarias.
    BLL.cDirecciones DireccionesDAL = new BLL.cDirecciones();
    Util.cFuncion oUtil = new Util.cFuncion();

    DataSet oDataCombos = new DataSet();

    oDataCombos = DireccionesDAL.CargarCombos(intAccion, strCodigo);
    if (oDataCombos.Tables[0].Rows.Count > 0)
    {
        foreach (DataRow row in oDataCombos.Tables[0].Rows)
        {
            list.Add(new ListItem(row.ItemArray[1].ToString(), row.ItemArray[0].ToString()));
        }
    }
    return list;
}

2 个答案:

答案 0 :(得分:0)

从截图中看来,您似乎正在使用WebForms。如果是这种情况,您要发布到实例或静态的方法是什么?因为如果它不是静态的,或者方法没有用WebMethod属性标记,则会发生这种情况。这是因为您的ajax请求只被视为正常的完整回发。

例如它应该看起来像

[WebMethod]
//assuming MyModel is the name of your model class to send back to the client.
public static MyModel CargarCombos(int intAccion, string strCodigo)
{
    //whatever it is you do here
}

答案 1 :(得分:0)

如果您通过JQuery调用WebMethod,请确保将内容类型设置为JSON,例如

$.ajax({
      type: "POST",
      url: "Pendientes.aspx/CargarCombos",
      data: "{intAccion:1, strCodigo:'BAR'}",
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      success: function(msg) {
        alert(msg);
      }
});