[英]Ajax request in Codeigniter
我一直在尝试在codeigniter中创建一个ajax请求。 我已经看到了这个问题: 简单的Ajax / Codeigniter请求,但是由于人们在Javascript中使用PHP的答案,我无法理解这一点。 我不知道这是有可能的,但是我尝试了一下,但似乎未执行PHP。
所以这是我的问题:
var param = {name : event_name, date : event_date, time : event_time};
$.ajax({
// As seen from the question here at stackoverflow.
url : "<?php echo base_url('event/new_event'); ?>",
type : 'POST',
data : param,
beforeSend : function(){ },
success : function(){
alert("Event created! Feel free to add as much details as you want.");
namebox.val("");
$("#new-event-modal").find(".close").trigger('click');
window.location.href = "<php echo base_url('user/dashboard'); ?>";
},
complete : function(){ },
error : function(){ }
});
我知道有可能在请求中对URL
进行硬编码,但这不是一个好习惯!
实现此目的最简单的方法是使用一些jquery:
function getBaseUrl() {
var l = window.location;
var base_url = l.protocol + "//" + l.host + "/" + l.pathname.split('/')[1];
return base_url;
}
var postdata = {name : event_name, date : event_date, time : event_time};
var url = getBaseUrl()+"/event/new_event";
$.post(url, postdata, function(result){
...alert(result);
});
或通过缓存直接从JS调用它:
<script>
var test = "<?php echo base_url(); ?>"+"event/new_event";
alert(test);
</script>
这是我要使用的一个肮脏的技巧 :
base_url()
作为该隐藏字段的值 。 base url
并根据需要使用它。 正确的方法始终是最简单的方法,如果尚未使用Jquery,则无需在客户端中导入它。
这是你的控制器
<?php if (!defined('BASEPATH')) die();
class Example_ctrl extends CI_Controller {
public function ajax_echo()
{
// get the ajax input
$input = json_decode(file_get_contents('php://input'));
// $input can be accessed like an object
$password = $input->password;
$name = $input->name;
// you can encode data back to JSON
$output = json_encode($input);
// and the response goes back!
echo($output);
}
}
?>
这进入您的客户
<script>
// here's the data you will send
var my_data = {name: "Smith", password: "abc123"};
// create the request object
var xhr = new XMLHttpRequest();
// open the object to the required url
xhr.open("POST", "example_ctrl/ajax_echo", true);
// on success, alert the response
xhr.onreadystatechange = function () {
if (xhr.readyState != 4 || xhr.status != 200)
return;
alert("Success: " + xhr.responseText);
};
// encode in JSON and send the string
xhr.send(JSON.stringify(my_data));
</script>
不能从外部javascript文件执行php代码。
尝试以下任何一种方法:-
1)base_url()不会改变,最好将其存储在cookie中,然后以服务器端代码和客户端代码访问
2)您可以在本地存储中存储相同的base_url(),它将在您的外部JavaScript文件中可用
希望它能对您有所帮助:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.