【问题标题】:Laravel ajax request to controllerLaravel ajax 请求控制器
【发布时间】:2017-02-26 21:51:44
【问题描述】:

您好,我从我的 ajax 请求中得到了奇怪的答案。这是我的控制器返回其中一个 id 的方法:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

//use App\Http\Requests;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;

use App\Source;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Response; //para user input post ajax


class RelationshipController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }
    public function getUserId()
    {
        return "123";
    }
}

这是我的路线:

Route::group(['middleware' => ['web']], function () {

    Route::post('/requestId', 'RelationshipController@getUserId');

});

Route::get('/home', 'HomeController@index');
Route::resource('relationship', 'RelationshipController');

这是我的 ajax 请求:

$("#consulta").click(function(){
    $.ajax({
        url: "requestId",
        type: 'post',
        data: {_token: CSRF_TOKEN, 'email': 'hihi'},
        success: function (data) {
            console.log(data);
        }, error: function () {
            alert("error!!!!");
        }
    });

});

我不知道为什么我会得到这个答案:

Object {message: ""}
message:""
__proto__:Object

这里有什么问题?路由组外的路由也不起作用。我在这里顺便说一句:

Route::get('/createrelationship2/{og}/{dest}/{xchange}', 'RelationshipController@createrelationship2');

如果我在“/public/createrelationship”上,则 ajax 调用有效,如果我在“/public/createrelationship2/10/5/1”上,则 ajax 调用无效。没看懂。。

【问题讨论】:

  • 也许尝试返回一个有效的 JSON。
  • @jakubwrona 你是什么意思一个有效的json?不适用于简单的字符串?应该工作..
  • 我猜你的 JS 库试图从你的控制器返回的 json 字符串构建一个 json 对象,但是你的控制器没有返回 json。
  • @jakubweona 我写了一个 json 响应,我得到了相同的答案
  • 你能验证它是否到达控制器,在你的getUserId()方法上,插入一个dd('reached controller');。在 chrome 上,开发人员工具搜索网络选项卡,看看它是否吐出 dd()

标签: php jquery ajax laravel


【解决方案1】:

你使用的是什么 laravel 版本?您可以尝试将 ['middleware' => ['web'] 替换为 ['middleware' => ['api']

Route::group(['middleware' => ['api']], function () {

    Route::post('/requestId', 'RelationshipController@getUserId');

});

【讨论】:

  • 什么 laravel 版本?我在 laravel 5.3.16 中创建了相同的东西并且一切正常。我在浏览器控制台中有 123 个。
  • 在 5.3 版中,但如果我在“/public/createrelationship”上,则 ajax 调用有效,如果我在“/public/createrelationship2/10/5/1”上,则 ajax 调用不起作用。我不明白我应该输入另一个网址吗?
  • 您的路线看起来如何?对于您的第二个示例,您需要路由 Route::post('/createrelationship2/{var1}/{var2}/{var3}', 'RelationshipController@getUserId'); 在您的 routes/api.php 文件中。
  • 哇,所有的工作都完成了,我这样写路由:Route::post('/createrelationship2/{og}/{dest}/{xchange}', 'RelationshipController@getUserId') ;
猜你喜欢
  • 2020-08-06
  • 2018-02-28
  • 2015-03-04
  • 1970-01-01
  • 2015-10-09
  • 2020-04-01
  • 2013-11-29
  • 2013-03-24
  • 1970-01-01
相关资源
最近更新 更多