当从Laravel中的资源控制器访问视图时,Vue.js中的$http.get不起作用
$http.get in Vue.js does not work when view is accessed from resource controller in Laravel
在Laravel项目中,Vue.js面临着一个令人困惑的JavaSript问题:如果我直接从routes.php路由到同一页面,则该页面可以工作,但如果我使用资源控制器,则无法工作。
routes.php:
Route::resource('foo', 'FooController');
get('foo_create', function () {
return view('foo.create'); // works
});
get('foobar_to_fetch', function () {
return App'Node::all(); // some json
});
FooController.php:
class FooController extends Controller
{
public function create()
{
return view('foo.create'); // broken
}
}
views/foo/create.php:
<div id="foo">
<table>
<tr v-repeat="foobar">
<td>{{ id }}</td>
<td>{{ name }}</td>
</tr>
</table>
<pre>{{ $data | json }}</pre>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/0.11.10/vue.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue-resource/0.1.16/vue-resource.min.js"></script>
<script src="http://localhost/foo/resources/views/foo/create.js"></script>
views/foo/create.js:
new Vue({
el: '#foo',
data: {
foobar: []
},
ready: function() {
this.fetchFoobar();
},
methods: {
fetchFoobar: function () {
alert('no problem until here');
this.$http.get('foobar_to_fetch', function (foobar_fetched) {
alert(foobar_fetched.length);
this.foobar = foobar_fetched;
})
}
}
});
如果我转到/foo_create
,我会看到两个警报和带有提取数据的表。如果我转到/foo/create
(这当然是我想要的),我只看到第一个警报,什么也看不到。
我发现,如果我给$http.get
完整的路径:,它在这两种情况下都有效
this.$http.get('http://localhost/foo/public/index.php/foobar_to_fetch', function (foobar_fetched) {
但是,同一个页面的行为怎么可能不同,这取决于我是如何到达那里的?
如果$http.get
被告知查找'foobar_to_fetch'
,并且该页面被访问为/foo/create
,那么它将查找哪里?在这种情况下,有没有一条相对的路径可以起作用?
尝试:
methods: {
fetchFoobar: function () {
alert('no problem until here');
this.$http.get('/foobar_to_fetch', function (foobar_fetched) {
alert(foobar_fetched.length);
this.foobar = foobar_fetched;
})
}
}
根据您触发该get请求的位置,它将更改url,因为'foobar_to_fetch'
是相对url,而'/foobar_to_fetch'
与域名相比是绝对的。
您还可以通过打开网络控制台(在Chrome上)并查看Ajax请求发送的标头来检测这一点。
相关文章:
- 通过php页面中的js强制下载txt
- 调用php数组中的JS函数
- 如何引用HTML中节点模块中的js文件
- PHP中的JS.警报没有'不要出现
- 压缩静态HTML文件中的JS和CSS
- 将toString方法暴露给nashorn中的js对象
- 从.js文件调用html中的js函数
- cloudant中的JS trim()函数
- 动态(重新)创建iframe内容不会重置Chrome中的JS对象
- 使用HTML标记中的JS变量在Javascript中动态创建HTML
- 基于AJAX的网站中的JS window.location
- 可以't在Wordpress中从HTML中的JS文件调用函数
- 对php文件的Ajax调用返回该文件中的JS代码,而不是执行它
- 存储在 2D 数组中的 js 调用函数
- 点击蓝色按钮(点击vbs中的js按钮)
- View赢得't在页面更改时加载Rails 4应用程序中的JS
- 如何更新charts.JS值字段中的JS变量
- 从html文件中的js中提取链接
- Rails 4.1.1.:lib/assets/javascripts中的JS文件;t负载
- 将jsondecoded字符串中的js-eescaped-char(或hex-char?)转换为php中的html实体