在我看来,我有以下 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 = " Reassign Vlan"; 警报(提交表单HTML);
编辑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>
它工作得很好。
我不明白为什么包含文件失败。