Javascript 是否可以在Slim中调用外部js文件中的路由
在我的twig文件中,我调用了一个到我的ajax的路由,就像这样Javascript 是否可以在Slim中调用外部js文件中的路由,javascript,routes,slim,Javascript,Routes,Slim,在我的twig文件中,我调用了一个到我的ajax的路由,就像这样 var fund = $('#fund'); //this will call php to populate fund drop-down $.ajax({ url: "{{ path_for('myfundrequest') }}", type: 'get', dataType: 'json' }).done(function (
var fund = $('#fund');
//this will call php to populate fund drop-down
$.ajax({
url: "{{ path_for('myfundrequest') }}",
type: 'get',
dataType: 'json'
}).done(function (response) {
var len = response.length;
fund.empty();
for (var i = 0; i < len; i++) {
var fundNum = response[i][0];
var fundName = response[i][1];
fund.append("<option value='" + fundNum + "'>" + fundNum + ' -- ' + fundName + "</option>");
}
fund.prepend("<option value=''>- Select A Fund -</option>").val('');
}).fail(function (jqXHR, textStatus, error) {
console.log("getFund: " + error);
});
});
我的问题是,如果我在公用文件夹中创建一个外部js文件
是否可以在外部文件中执行此操作url:“{path_for('myfundrequest')}
?不,在普通JavaScript文件上不可能,但是
我可以想出两个选择:
$app->get('/data/myScripts.js', 'ScriptProvider:myScript');
class ScriptProvider {
public function myScript($req, $res) {
return $this->view->render($res, 'data/myScript.js.twig');
}
}
第二个选项的性能更高,因为细枝引擎不需要运行。并且Slim不会处理它,对吗?您只是有一些文件要在Slim之外运行?是另一个PHP文件吗?您使用的是Apache类型服务器吗?url调用的是控制器中的函数。是的,Apache。如果您不想Slim处理url,而不是直接在url中运行文件,然后您可以设置.htaccess,以便Slim不会处理现有文件的url。如果您对此感兴趣,我将发布一个答案。我有大约1000行js。我应该将其保留在正在工作的小树枝文件中,还是将其移动到外部l js文件?我会将其移到js文件中。我会将
RewriteCond%{REQUEST\u FILENAME}!-f
添加到.htaccess。看看这是如何用于Slim或其他框架的。我尝试了第二种方法,并在('myvendorrequest')中得到了此错误%7B%7B%20path\u%20%7D%7D
@moe你从哪里得到一个错误,这也不是一个真正的错误。我在控制台中看到了它。这是响应{“message”:“not found”}
@moe可能是你路线的响应?按照@Nima建议的方式对路线进行第二次硬编码有什么好处?
$app->get('/data/myScripts.js', 'ScriptProvider:myScript');
class ScriptProvider {
public function myScript($req, $res) {
return $this->view->render($res, 'data/myScript.js.twig');
}
}
<!-- [..] -->
<script>
Url = {
myfundrequest: "{{ path_for('myfundrequest') }}"
};
</script>
$.ajax({
url: Url.myfundrequest,
..