2016-03-02 20 views
2

我有一个Ajax功能:如何从laravel控制器传递一个变量数组到我的AJAX功能

$.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...) 

我在jQuery的data变量,并能够使用它像:

$('h2').val(data['title']);或任何类似

谢谢你在前进,我很欣赏任何帮助。

+0

尝试从您的控制器返回一个JSON字符串,并使用'data.title'访问各个组件。 –

回答

2

在Laravel 5,使用response()从一个AJAX调用返回一个JSON对象,像这样:

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 
      } 
    } 
相关问题