我正在使用codeigniter和jquery ajax。我在wamp上的本地应用程序(运行良好)和部署的应用程序(不太好)之间存在一些不一致。建议的修复方法是将ajax的相对路径转换为ajax的绝对路径,因此看起来像:
url: "YOURBASEPATH/AjaxController/update",
location.href = "YOURBASEPATH/pan_controller/my_detail";
下面用codeigniter将ajax相对路径转换为绝对路径我已将代码更改为:
在标题部分中,只需添加以下脚本。
<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;
您的语法错误。如果您希望函数在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;
我之前回答了这个问题。在这里,我强烈建议你一步一步地做以下事情:
- 在config.php的第17行更新您的基本url
-
打开头文件视图的头部分,在调用任何自定义jquery或javascript文件之前放入以下脚本:
var BASE_URL = "<?php echo base_url();?>";
-
现在,在您的自定义jQuery文件中,您将获得BASE_URL作为变量。
但请记住,整个项目只需要使用一个头文件
如果您面临任何进一步的问题,请与我分享您的视图文件结构。
这有什么问题?
url: "/AjaxController/update",