未在codeigniter项目中评估Javascript变量

时间:2014-11-03 14:44:45

标签: php jquery ajax codeigniter

我正在使用codeigniter和jquery ajax。我在我的应用程序本地使用wamp(完美运行)和我部署的应用程序(不是那么多)有一些不和。一旦可能的建议修复是将ajax相对路径转换为ajax的绝对路径,所以它看起来像:

url: "YOURBASEPATH/AjaxController/update",
location.href = "YOURBASEPATH/pan_controller/my_detail";

关注Convert ajax relative paths to absolute paths with codeigniter我已将代码更改为:

在标题部分中,只需添加以下脚本。

<script type="text/javascript">
    var BASE_URL = "<?php echo base_url();?>";
</script>

$.ajax({a
               type: "POST",
               url: BASE_URL+"AjaxController/update",
               data:{ i : searchIDs, m : message },                        
               dataType: 'json',
               .done(function() { 
                    alert("REFRESHING..");
                    location.href = BASE_URL+"pan_controller/my_detail";
                });
              }
           })

我认为这样可行但是由于某些原因,BASE_URL没有被识别为变量,而是没有看到例如:

url: "YOURBASEPATH/AjaxController/update",

我明白了:

url:  BASE_URL+ "/AjaxController/update",

当我看到来源时。

我的编辑器中没有看到任何错误。任何想法为什么这不起作用?

编辑:

   case "Set":
               var message = $('#send_message').val()
               if (searchIDs.length>0){
               console.log(BASE_URL+ "Update/update");

               $.ajax({
                   type: "POST",
                   url: BASE_URL+"Update/update",
                   data:{ i : searchIDs, m : message },                        
                   dataType: 'json',

                    .done(function() { 
                        alert("REFRESHING..");
                         location.href = BASE_URL+"pan_controller/detail";
                       });
               })


                } else { alert("nothing checked") }
              break;

3 个答案:

答案 0 :(得分:1)

我之前回答过这个问题。在这里,我强烈建议您一步一步地做以下事情:

  1. 在第17行更新config.php中的基本网址。
  2. 打开标题文件视图的标题部分,并在调用任何自定义jquery或javascript文件之前放置以下脚本:

    var BASE_URL = "<?php echo base_url();?>";
    
  3. 现在,在您的自定义jQuery文件中,您将获得BASE_URL作为变量。

  4. 但请记住,您只需要为整个项目使用一个头文件。

    如果您遇到任何进一步的问题,请与我分享您的查看文件结构。

答案 1 :(得分:1)

你的语法错了。如果您希望在ajax请求之后运行函数,请使用complete回调,并且还应该使用成功和错误回调来进行调试:

case "Set":
    var message = $('#send_message').val();
    if (searchIDs.length>0){
        console.log(BASE_URL+ "Update/update");

        $.ajax({
            type: "POST",
            url: BASE_URL+"Update/update",
            data:{ i : searchIDs, m : message },
            dataType: 'json',
            success: function(data) {
                console.log(data);
            },
            error: function(data) {
                console.log(data);
            }
            complete: function() {
                alert("REFRESHING..");
                location.href = BASE_URL+"pan_controller/detail";
            }
    })


    } else { 
        alert("nothing checked");
    }
break;

答案 2 :(得分:0)

这有什么问题?

url: "/AjaxController/update",