Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax Heroku上的Laravel-MethodNotAllowedHttpException_Ajax_Laravel_Heroku - Fatal编程技术网

Ajax Heroku上的Laravel-MethodNotAllowedHttpException

Ajax Heroku上的Laravel-MethodNotAllowedHttpException,ajax,laravel,heroku,Ajax,Laravel,Heroku,我想知道如何获得此方法NotAllowedHttpException。我一直在尝试将我的应用程序部署到heroku,但我一直遇到这个错误。我有一些邮寄路线: routes/web.php: Route::get ('/', 'CodeController@index'); Route::get ('/api/token/', 'CodeController@token'); Route::post ('/api/checkpassword/', 'CodeControlle

我想知道如何获得此方法NotAllowedHttpException。我一直在尝试将我的应用程序部署到heroku,但我一直遇到这个错误。我有一些邮寄路线:

routes/web.php:

Route::get  ('/', 'CodeController@index');

Route::get  ('/api/token/',         'CodeController@token');
Route::post ('/api/checkpassword/', 'CodeController@checkPassword');
Route::post ('/api/setpassword/',   'CodeController@setPassword');
Route::post ('/api/clearpassword/', 'CodeController@clearPassword');
Route::post ('/api/changeuri/',     'CodeController@changeUri');

Route::post ('/api/submission/', 'SubmissionController@submit');
Route::post ('/api/convert/',    'SubmissionController@convert');

Route::post ('/api/postresult/', 'CodeController@postResult');
Route::post ('/api/postdata/',   'CodeController@postData');
Route::get  ('/api/getdata/',    'CodeController@getData');

Route::get  ('/share/{uri}', 'CodeController@share');
Route::get  ('/{uri}',       'CodeController@open');
在我的javascript文件中,我通过ajax方法访问它。以下是我的ajax方法之一:

$.ajax ({
    url: '/api/checkpassword/',
    type: 'POST',
    data: {
        "uri": uri,
        "password": $('#password').val ()
    },
    success: function (data) {
        if (data['status'] == 'success')
            window.location.reload (true);
        else {
            $('#checkpassword-alert').html (data['status']);
            $('#checkpassword-alert').show ();
        }
    },
    error: function (jqXHR, textStatus, errorThrown) {
        $('#checkpassword-alert').html (errorThrown);
        $('#checkpassword-alert').show ();
    }
});
在我本地的机器上一切都很好。它收到了正确的答复。但当我部署到heroku时,它会转到错误函数,并在
#checkpassword alert
中显示
方法不允许

不知何故,我可以找到工作的路线(但仍然没有如预期的那样)。我将所有POST路由更改(或添加)为GET,将所有ajax方法(类型)更改为“GET”,错误消失了。但我的控制器又出了一个错误。它告诉我一些参数(“uri”)没有设置(我检查了它是否在控制器中设置)

以下是我如何传递MethodNotAllowedHttpException的方法:

Route::get  ('/', 'CodeController@index');

Route::get  ('/api/token/',         'CodeController@token');

// or just simply change these POST routes to GET
Route::post ('/api/checkpassword/', 'CodeController@checkPassword');
Route::post ('/api/setpassword/',   'CodeController@setPassword');
Route::post ('/api/clearpassword/', 'CodeController@clearPassword');
Route::post ('/api/changeuri/',     'CodeController@changeUri');

Route::post ('/api/submission/', 'SubmissionController@submit');
Route::post ('/api/convert/',    'SubmissionController@convert');

Route::post ('/api/postresult/', 'CodeController@postResult');
Route::post ('/api/postdata/',   'CodeController@postData');
Route::get  ('/api/getdata/',    'CodeController@getData');

Route::get  ('/share/{uri}', 'CodeController@share');
Route::get  ('/{uri}',       'CodeController@open');

Route::get ('/api/checkpassword/', 'CodeController@checkPassword');
Route::get ('/api/setpassword/',   'CodeController@setPassword');
Route::get ('/api/clearpassword/', 'CodeController@clearPassword');
Route::get ('/api/changeuri/',     'CodeController@changeUri');

Route::get ('/api/submission/', 'SubmissionController@submit');
Route::get ('/api/convert/',    'SubmissionController@convert');

Route::get ('/api/postresult/', 'CodeController@postResult');
Route::get ('/api/postdata/',   'CodeController@postData');

我不明白为什么在我部署它的时候这些路线不起作用。有人能帮我吗?

如何通过cURL访问API,例如:
cURL-xpost{{your_HOST}/api/checkpassword-H'缓存控制:无缓存'-H'内容类型:application/x-www-form-urlencoded'-d'uri=xxx&password=yyy'
在您的js文件和web.php中尝试/api/checkpassword而不是/api/checkpassword/,以便发布method@Alfa它不等于ajax请求吗?@Aditya Singh哇,它成功了!这是怎么可能的?实际上,当您发送get请求时,您的参数将附加在尾随的反斜杠之后,因此,如果您的url为abc.com/它将成为abc.com/?a=2,但是post没有这种功能,因此“/”间接指的是目录而不是文件。请检查服务器上的htaccess文件,因为后面的反斜杠通常会被忽略。很高兴我能帮忙