表单's的action属性-如何在javascript中指定完整的应用程序路径
form's action property - how to specify full app path in javascript
我的视图中有以下javascript:
$.ajax({
url:"<?php echo site_url('switches/showknownvlans/'.$ip.'/'.$hardwaremodel);?>",
type:'POST',
dataType:'json',
success: function(returnDataFromController) {
//alert(returnDataFromController.length);
var htmlstring;
var submitFormHTML;
htmlstring = "some html stuff";
for(i = 0; i < returnDataFromController.length; i++) {
}
submitFormHTML = "<form method='post' accept-charset='utf-8' action='controllerX/methodABC/"+ $('#ip').val() +"/" + $('#hardwaremodel').val() +"/" + $('#port').val() + "'><input type='text' id='newVlanID' style='width:5em;height:1.5em'/> <button type='submit' class='btn' id='saveVlan' style='width:10em;height:2em'>Reassign Vlan</button></form>";
alert(submitFormHTML);
$('#clientajaxcontainer').html(htmlstring);
$('#newvlanform').html(submitFormHTML);
我当前在"submitFormHTML"字符串中为表单的"action"属性定义的路径不正确。而不是将我的用户带到"http://myserver/myapp/controllerX/methodABC/",它将"controllerX/methodABC/"附加到当前URL的末尾。因此,如果用户位于:
http://myserver/mypp/controller23/method123/
当点击按钮提交表格时,它们最终会出现在:
http://myserver/mypp/controller23/method123/controllerX/methodABC/
有没有办法在javascript中获取site_url()或base_url?有什么建议吗?谢谢你阅读这篇文章。
编辑:
根据某人的建议(我认为这是个好主意),我创建了一个名为"global.js"的新.js文件,其中有一行:
var BASEPATH = "<?php echo base_url(); ?>";
然后,这个文件被包含在我的视图模板PHP文件中,如下所示:
<!DOCTYPE html> <!-- aka HTML5 -->
<html lang="en">
<head>
<meta charset="utf-8">
<link href="<?php echo base_url();?>assets/css/bootstrap.css" rel="stylesheet">
<script type='text/javascript' src='<?php echo base_url();?>assets/js/global.js' charset="utf-8"></script>
我修改了我的javascript,使表单看起来像:submitFormHTML="重新分配Vlan";alert(submitFormHTML);
第2版:
有趣的是,当我在global.js中定义BASEPATH时,我的javascript最终生成的URL看起来是这样的:
http://myserver/myapp/index.php/switches/showportvlan/parm1/parm2/%3C?php%20echo%20base_url%28%29;?%3E/index.php/switches/changeportvlan/parm1/parm2/parm3.
正如你所看到的,它没有解释",而是按原样包含了文本
但是,如果我忘记了包含一个单独的js文件,就这样做:
<link href="<?php echo base_url();?>assets/css/bootstrap.css" rel="stylesheet">
<script type='text/javascript'>
var BASEPATH="<?php echo base_url();?>";
</script>
它工作得很好。
我不明白include文件失败的原因。
更新答案以匹配您的新问题
header.php
<base href="<?php echo base_url(); ?>" />
<link href="assets/css/bootstrap.css" rel="stylesheet">
<script>
//global vars, can be used in any external js file
var BASEPATH = "<?php echo base_url(); ?>";
var IP = "<?php echo $_SERVER['REMOTE_ADDR']";
</script>
<script src="assets/js/global.js"></script>
global.js
(function($){
var formsObject = {
init : function(){
if($("form#id1"))
{
this.formOne; //run form one if id is present
}
},
formOne : function(){
var fOne = $("form#id1");
fOne.submit(function(){
var data = {
'' : '',
}
do_ajax(data);
});
var do_ajax = function(data){
$.ajax({
url : BASEPATH + fOne.attr('action'),
//and so on
});
}
}
}
//ready
$(function(){
formsObject.init();
});
})(jQuery);
实际调用的操作是正确的。与href属性类似,如果您在没有斜杠(/
)的情况下启动它,它只会将值附加到当前页面的uri中,这就是您描述的行为。
您有两个选项可以从HTTP HOST:的根引用此脚本
以斜线开始操作属性:
action="/controllerX/methodABC/"
或者添加到服务器的完整路径,包括协议:
action="http://myserver/mypp/controllerX/methodABC/"
- Javascript:使用绝对路径设置img src
- 如何使用Javascript上传给定路径的文件
- react路由器使用简单的javascript路由器配置来处理不匹配的路径
- 表单's的action属性-如何在javascript中指定完整的应用程序路径
- 使用c#中的邮件附件javascript在客户端机器上获取服务器端导出的crystal报告路径.下面的
- javascript window.location在检查firebug时给了我一个错误的url路径
- 如何将字符串附加到对象中'路径'在Javascript中
- javascript文件中带有php(wordpress)的Src文件路径
- 为什么html src属性中的相对url是因为Javascript函数中的完整路径
- 如何使用php和javascript获取网页中显示图像的路径
- javascript onclick获取不带路径的图像名称
- Symfony2-Javascript文件中的图像路径
- 将 MVC 3 应用程序部署到 URL 文件夹已损坏 JavaScript 和内容路径
- 指向目录的Javascript路径
- Zf2布局css和javascript路径不会在子路由上解析
- 相对javascript路径不起作用
- 用id标记javascript路径
- 如何使用Xamarin android从c#调用Javascript方法时指定Javascript路径
- JavaScript:路径的自定义函数's”;d”;属性
- 相对于文件的Javascript路径