2015-09-03 5 views
0

Я начинаю использовать jquery-ajax. Я пытаюсь получить данные Employee в front-end, используя метод ajax. Но URL-адрес не вызывает метод действия. Пожалуйста, проверьте приведенный ниже кодНевозможно вызвать метод действия контроллера с использованием Ajax

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

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> 

Пожалуйста, помогите мне.

ответ

0

Construct вы URLS правильно используя

url: '@Url.Action("GetEmpData", "Home")', 

и па данных с помощью

data: { id: eno }, 

и удалить

contentType:'application/json;', 

Редактировать

Поскольку ваш скрипт в отдельном е Ile, изменить ваш 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) { 
    ... 
    } 
    }); 
}); 
+0

Теперь также не работает. И получить ниже ошибки в браузере Chrome. «GET http: // localhost: 1229/@Url.Action (% 22GetEmpData% 22,% 20% 22Home% 22)? Id = 101 & _ = 1441254168086 404 (не найдено)" –

+0

После удаления 'contentType' также im получает ту же ошибку из браузера (404) –

+0

404 означает, что URL-адрес неверен, и подумайте о проверке вашего маршрутного кода –

-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); 
} 
} 
+0

Привет, Nasir i m сталкивается с ошибкой 500 с вышеуказанным кодом. –

+0

ваш тип или имя параметра не соответствует. например, если у функции контроллера есть параметр GetEmpData (string id), это будет ваша строка запроса «Главная/GetEmpData? id =" + eno –

+0

OP имеет маршрут с '{id}', и метод имеет параметр с именем 'id', поэтому это не отличается от исходного кода OP –