Javascript $.getJSON在Knockout.js中的URL错误

Javascript $.getJSON在Knockout.js中的URL错误,javascript,model-view-controller,knockout.js,laravel,Javascript,Model View Controller,Knockout.js,Laravel,我正在使用Laravel 4 PHP MVC框架和Knockout.js来制作一个简单的应用程序 我已经设置了一个RESTful API,希望从客户端执行$.getJSON请求,但是get请求被发送到wring URL 而不是去做一个http://mydomain.com/users/123Fdfsd02/reports Knockout将请求发送到http://mydomain.com/users/reports 哪个是错误的URL 这是我的淘汰码: function ReportViewMo

我正在使用Laravel 4 PHP MVC框架和Knockout.js来制作一个简单的应用程序

我已经设置了一个RESTful API,希望从客户端执行$.getJSON请求,但是get请求被发送到wring URL

而不是去做一个http://mydomain.com/users/123Fdfsd02/reports Knockout将请求发送到http://mydomain.com/users/reports 哪个是错误的URL

这是我的淘汰码:

function ReportViewModel() {
    var self = this;

    self.report = ko.observable();  

    self.getAllReports = function(data) {
        $.getJSON("reports", function(data) {
            self.report(data);
        });
    }

    self.getAllReports();
};

ko.applyBindings(new ReportViewModel());
我错过了什么?我尝试将url设置为./reports和reports,但仍然没有成功


谢谢你帮了一个新手

也许使用绝对路径而不是相对路径更明智

是否可以使用变量构造路径/users/123Fdfsd02/报告?或者这是不可能的

哪个URL显示在浏览器的地址栏中?大概http://mydomain.com/users?

这应该可以:

var rootUrl = "/users/"+ userToken +"/reports"
其中可以通过以下方式找到userToken:

s = document.location.href;
s = s.replace('http://mydomain.com/users/', '');

userToken=  s.substring(0, s.indexOf('/'));

我希望能有所帮助。

就个人而言,我会这样做:

设置带有“base”标记的HTML。基本标记将确保每个相对URL前面都有其“href”属性的值,因此对相对URL user/detail/1的AJAX调用将转到这个绝对URL->http://mydomain.com/user/detail/1


防弹解决方案是使用绝对URL。

在我的Laravel项目中,在其他可能需要它的脚本之前,我会在标题视图部分中使用它:

<script>
    var BASE_URL = "{{ URL::to('/') }}";
</script>

无论应用程序是在本地主机的子文件夹中运行,还是在临时或生产环境中运行,都能正常工作。

我的浏览器中的url是mydomain.com/users/123Fdfsd02,所以我想知道为什么请求url会从123Fdfsd02中删除。API的设置方式不允许我动态创建URL,因为我认为这是不必要的。可能只是使用window.location.href+'/reports'抱歉,它是window.location.pathname+'/reports。那么userToken是如何定义的?
function ReportViewModel() {
    ...

        $.getJSON("users/123Fdfsd02/reports",
    ...
};
<script>
    var BASE_URL = "{{ URL::to('/') }}";
</script>
 $.getJSON(BASE_URL+"api/content", params, function(response) {
     //whatever 
 });