无法使用Ajax

时间:2015-09-03 04:17:05

标签: asp.net-mvc

我是jquery-ajax的初学者。我试图使用ajax方法将Employee数据导入前端。但是url没有调用action方法。请检查以下代码

MyScripts.js:

function fn_test()
{
    var eno = $("#t1").val();

    $.ajax({
        cache :false,
        url: "Home/GetEmpData/"+eno,
        type: 'GET',
        data:"",
        contentType:'application/json;',
        success: function (response)
        {
            var str = "Ename :" + response.EmpName + "<br >";
            str += "Job :" + response.Job + "<br >";
            tr += "Salary :" + response.Salary + "<br >";
            str += "Deptno :"+response.DeptNo+"<br >";
            $("#sp1").html(str);
        }
    });
}

HomeController.cs中的Action方法

public ActionResult GetEmpData(int id)
{
    Employee obj = db.Employees.Find(id);
    return Json(obj, JsonRequestBehavior.AllowGet);
}

Index.cshtml

Enter your name :
<input type="text" id="t1" /><br /><br />
<input type="button" id="b1" onclick="fn_test()" value="get message" /><br /><br />
<span id="sp1"></span>

请帮帮我。

2 个答案:

答案 0 :(得分:0)

使用

正确构建网址
url: '@Url.Action("GetEmpData", "Home")',

使用

传递数据
data: { id: eno },

并删除

contentType:'application/json;',

修改

由于您的脚本位于单独的文件中,请将您的html修改为

<input type="button" id="b1" data-url="@Url.Action("GetEmpData", "Home")" value="get message" />

然后将脚本更改为

$('#b1').click(function() {
  $.ajax({
    cache :false,
    url: $(this).data('url'),
    type: 'GET',
    data: { id: $("#t1").val() },
    success: function (response) {
     ...
    }
  });
});

答案 1 :(得分:-1)

你传递参数作为查询字符串。你告诉浏览器使用这个吗?在控制器中使用的变量名之前签名,之后您可以为此赋值。

function fn_test()
    {
        var eno = $("#t1").val();

        $.ajax({
            cache :false,
            url: "Home/GetEmpData?parameterNameInController="+eno,
            type: 'GET',
            data:"",
            contentType:'application/json;',
            success: function (response)
            {
                var str = "Ename :" + response.EmpName + "<br >";
                str += "Job :" + response.Job + "<br >";
                tr += "Salary :" + response.Salary + "<br >";
                str += "Deptno :"+response.DeptNo+"<br >";
                $("#sp1").html(str);
            }
        });
    }


public ActionResult GetEmpData(int id)
{
Employee obj ;
try{
    obj = db.Employees.Find(id);
    return Json(obj, JsonRequestBehavior.AllowGet);
}catch(Exception ex)
{ obj=new Employee();
//return empty object
return Json(obj, JsonRequestBehavior.AllowGet);
}
}