Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.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
Jquery 拉威尔和阿贾克斯_Jquery_Ajax_Laravel - Fatal编程技术网

Jquery 拉威尔和阿贾克斯

Jquery 拉威尔和阿贾克斯,jquery,ajax,laravel,Jquery,Ajax,Laravel,我想在我的laravel项目中使用ajax方法,我已经为它定义了一条路线: Route::get('/ajax/get_discount_code','SomeController@some_method'); 所以我使用jQuery的get函数: $('#button').click(function () { var url = '/ajax/get_discount_code'; $.get( url , function( data ) { console.

我想在我的laravel项目中使用ajax方法,我已经为它定义了一条路线:

Route::get('/ajax/get_discount_code','SomeController@some_method');
所以我使用jQuery的get函数:

$('#button').click(function () {
    var url = '/ajax/get_discount_code';
    $.get( url , function( data ) {
      console.log(data);
    });
 });
我得到以下错误:

获取404(未找到)

原因是,它试图获得而不是

为了修复此错误,我可以更改javascript url变量并将其设置为:

var url = '/myProject/public/ajax/validate_discount_code';
然后404(未找到)错误将不再出现,它工作正常,但我知道这不是修复此错误的好方法,因为我已将“myProject/public”硬编码到字符串中。
我的问题是,修复本例中404 Not Found错误的最佳实践是什么?

使用laravel url()函数使完整的url类似于

var url = "{{ url('/ajax/get_discount_code') }}";

您可以在主刀片文件的头部添加一个全局变量,用于存储baseURL的值,如:

<head>
...
  <script type="text/javascript">
      var base_url = '{!! url('/') !!}';
  </script>
  //the rest of ur scripts
</head>

...
var base_url='{!!url('/')!!}';
//其余的脚本

在您的脚本中,您可以调用变量
base\u url
,并将其与请求的url粘在一起,这样您就不必担心它,而且您还可以通过更改该变量的值来更改
base\u url
,整个站点将正常工作。

您需要设置一个虚拟主机来解决此问题

它给出404错误的原因是localhost没有指向Laravel安装,因此您无法引用根URL

假设您使用的是apache,则需要执行以下操作来设置vHost:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName my-project.local
    DocumentRoot {localhost_dir}/myProject/public
    <Directory {localhost_dir}/myProject/public>
        Options Indexes FollowSymLinks
        Allowoverride All
        Require all granted
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/zjx_error.log
    CustomLog ${APACHE_LOG_DIR}/zjx_access.log combined
</VirtualHost>

服务器管理员webmaster@localhost
ServerName my-project.local
DocumentRoot{localhost_dir}/myProject/public
选项索引跟随符号链接
允许超越所有
要求所有授权
ErrorLog${APACHE_LOG_DIR}/zjx_error.LOG
CustomLog${APACHE_LOG_DIR}/zjx_access.LOG组合
您将能够将AJAX指向您想要的路线。请记住在主机文件中添加一行指向locahost的内容。

如果您安装了帮助器函数,您可以在Javascript中轻松地包含指向路由的URL:

$('#button').click(function () {
    var url = laroute.url('/ajax/get_discount_code'); // laroute.action('SomeController@some_method'); will also work
    $.get( url , function( data ) {
        console.log(data);
    });
});

您可以看到这篇文章:展示如何在路由中定义它。php该库在使用Javascript@Michel路由::get('/ajax/get\u折扣\u代码','SomeController@some_method');我在一个javascript文件中。我无法使用laravel的模板引擎您有一个外部js文件,您没有将js代码写入您的刀片文件?无法将Illumb\Routing\UrlGenerator类的对象转换为string@AliSeyfi在url()中添加“/”,检查答案