2016-03-02 3 views
2

У меня есть функция AJAX:Как передать массив переменных из контроллера Laravel моей АЯКС функции

$.get('/updateAssignment', {title: title, id: id, class: subject, date: date, description: description}, function(data) 
    { 

    window.location.hash = data; 

    }); 

И это прекрасно работает, это моя функция в мой контроллер, который направляется к выше AJAX звоните:

public function updateAssignment() 
{ 

    // Bunch of code here 

    return 'hello world'; 

} 

Теперь я знаю, что все, что я вернусь, будет в переменной JQuery data, но я хочу больше, чем один «значение».

Как бы я вернуть что-то вроде

return array('title' => $title, 'description' => $description, etc...) 

моей data переменной в JQuery и быть в состоянии использовать его как:

$('h2').val(data['title']); или что-нибудь подобное

Заранее спасибо, я ценю любая помощь.

+0

Попробуйте вернуть строку JSON из вашего контроллера и, например, получить доступ к отдельным компонентам с помощью 'data.title'. –

ответ

2

В Laravel 5, используйте response() вернуть объект JSON из вызова AJAX, например:

return response(['title' => $title, 'description' => $description]); 

В вашем Javascript, вы бы тогда доступ к этим данным с использованием объекта обозначения, так:

$.get("URL", function(data){ 
    var title = data.title; 
    var description = data.description; 
    // Etc, etc 
}); 
+1

Большое спасибо, это решило мою проблему! :) –

1
public class AssignmentViewModels 
    { 
     public string title { get; set; } 
     public string id { get; set; } 
     public string class { get; set; } 
     public string date { get; set; } 
     public string description { get; set; } 
    } 


    public JsonResult updateAssignment(string title, string id, string class, string date, string description) 
    { 
     var model = new AssignmentViewModels();// if you have a list of data return, make "List<AssignmentViewModels>()" ,& in Ajax sucess method, make a foreach loop & collect the data. 
     model = repository._update(title,id,class,date,description);//return updated data 
     return Json(model, JsonRequestBehavior.AllowGet); 
    } 


    var URL = ResolvedUrl.replace('ActionName', 'updateAssignment').replace('ControllerName', 'YourController'); 
    var data = { title: title, id: id, class: subject, date: date, description: description }; 
    $.get(URL, data, function (result) { 
      if ($('#h2')[0]) { 
       $('#h2').val(result.title);// no need to use JSON.parse 
      } 
    } 
Смежные вопросы