私のビューには次の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/」に移動する代わりに、現在の URL の末尾に「controllerX/methodABC/」を追加します。ユーザーが次の場所にいる場合:
http://myserver/mypp/controller23/method123/
ボタンをクリックしてフォームを送信すると、次のようになります。
http://myserver/mypp/controller23/method123/controllerX/methodABC/
javascript で site_url() または base_url を取得する方法はありますか? 助言がありますか?投稿を読んでいただきありがとうございます。
編集:
誰かの提案に従って (良い考えだと思います)、「global.js」という名前の新しい .js ファイルを作成しました。その中に次の 1 行があります。
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);
編集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>
それはうまく動作します。
インクルード ファイルが失敗する理由がわかりません。