对Laravel的简单Ajax请求不起作用

时间:2014-09-18 15:04:35

标签: php jquery mysql ajax laravel-4

使用带有laravel后端的ajax尝试简单返回和显示用户信息。使用最新的JQuery和Laravel和MySQL。这是简单的路线:

Route::get('users', function()
{
    $users = User::all();
    return $users;
});

在浏览器中通过url调用时,这很正常。

这是简单的ajax请求:

$().ready(function() {
  $.ajax({
    url: "http://xx.xxx.xxx.xxx/users",
    type: "GET",
    cache: false,
    dataType: "jsonp",
    jsonpCallback: "JsonpCallback"
  })
  .done(function( data ) 
  {
    JsonpCallback( data );
  })
  .fail(function( jqXHR, textStatus, errorThrown ) 
  {
    alert( "Request failed: " + textStatus + "   /   " + errorThrown );
  });
  function JsonpCallback( json )
  {
    $( '#mainContent' ).html( json.result );
  }
  return false;
});

用户记录正在返回到dom中,我可以通过dev工具网络响应看到它们,但.fail每次都会踢,并且永远不会调用回调。失败的是:

Request failed: parsererror / Error: JasonpCallback was never called.

我已经尝试了几天我能找到的所有解决方案,并且可以真正使用帮助。它必须是我想念的简单。

1 个答案:

答案 0 :(得分:0)

jQuery期待jsonp响应,但return $users返回普通json。可以将dataType切换为json,也可以改为:

return Response::json($users)->setCallback(Input::get('callback'));

...从你的路线。

请参阅creating a JSONP response下的Laravel文档。