Ajax没有进行函数调用

时间:2014-06-04 09:36:29

标签: c# javascript .net ajax asp.net-mvc-4

我有ajax功能:

function LoadTeacherObservationData(_CategoryID, _SearchText) {
        alert("In here");
        alert(_CategoryID);
        alert(_SearchText);
        flag = 1;
        $.ajax({
            url: "PP/getTeacherObservationData",
        data: {
        'CategoryID': _CategoryID,
        'SearchText': _SearchText
        },
    dataType: "json",
        type: 'POST',
    cache:false,
    success: function (data) {
        OnlebelChange(_CategoryID);
        $('#hdnCategoryID').val(_CategoryID);

        $("#lvTeacherData").kendoListView({
            dataSource: data,
            dataBound: function(e) {
                if(this.dataSource.data().length == 0){
                    //custom logic
                    $("#lvTeacherData").append("<h4>&nbsp;&nbsp;No record found.</h4>");

                }},
            template: kendo.template($("#lvTeacherData_Template").html())
        });
    },
    error: function () {
        alert("error in click");
    }
    });
    }

我确保使用正确的参数调用函数,因为我已经通过警告框检查了它。

我的问题是它没有被渲染到:

PP / getTeacherObservationData,正如我在网址中提到的那样。

PP是我的控制器,getTeacherObservationData是我的功能。

我写了这个函数如下:

public JsonResult getTeacherObservationData(string CategoryID, string SearchText)
        {
            try
            {
                if (CategoryID == "1")
                    return Json(new TeacherObservation().ScheduledObserVations(SearchText));
                if (CategoryID == "2")
                    return Json(new TeacherObservation().InProcessObservations(SearchText));
                if (CategoryID == "3")
                   return Json(new TeacherObservation().CompletedObservations(SearchText));

                return Json(new List<TeacherObservation>());
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

而不是调用此函数ajax函数代码进入错误块并提醒我:error in click

可能是什么问题?

请帮帮我。

我想通过ajax进行函数调用。

使用MVC4。

2 个答案:

答案 0 :(得分:2)

扩展我的评论:网址PP/getTeacherObservationData是相对的,所以如果您当前不在网站的根目录中,那么这将无法正常工作。

如果您的网站位于域的根目录中,则使用正斜杠前缀/PP/getTeacherObservationData将起作用。

您还可以使用this answer中的一个解决方案。例如ResolveUrl("~/")可以动态获取网站的根目录,这样更好,因为它更具可移植性。例如,如果您将站点移出域的根目录并进入目录,则与将硬编码根目录不同,这将继续有效。

答案 1 :(得分:0)

我不知道你正在使用什么PHP框架,但通常你不能只是return一个AJAX调用的值,你必须以某种方式输出它以将它发送回调用者。尝试使用echoprint代替返回。

为了防止进一步渲染(如果有的话),你应该在它回显你指定的JSON之后以某种方式结束脚本。

你还应该检查在firebug或类似控制台中呈现的输出,看看你是否得到了一个普通的JSON(你们非常期待)或者一些HTML包装的内容,这些内容由你的php框架呈现并且无法被解析。< / p>