gpt4 book ai didi

javascript - Ajax 不会调用 Codeigniter Controller 的方法

转载 作者:行者123 更新时间:2023-11-29 17:57:47 26 4
gpt4 key购买 nike

我是 ajax 的新手(根本不懂 jquery)所以我一直在使用不带 jquery 的简单 ajax,我想做的只是简单地调用 codeigniter 的 Controller 方法。不知道我错在哪里。这是我的 ajax 函数和 Controller :

   function usernameOnChange() {
var username = document.getElementById("register_username").value;
if (username.length == 0) {
document.getElementById("usernameGlyph").className = "glyphicon glyphicon-remove";
return;
} else {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("usernameGlyph").className = 'glyphicon glyphicon-ok';
}
};
var link = "<?php echo base_url("index.php/Test/checkUsername?username="); ?>" + username ;
xmlhttp.open("GET", link, true);
xmlhttp.send();
}
}

这是我的 Controller (它仍然是测试 Controller ,只是为了查看我的 ajax-codeigniter php 连接是否正常工作)。

<?php

class Test extends CI_Controller {

public function __construct() {
parent::__construct();
$this->load->helper("url");
$this->load->library("form_validation");
$this->load->helper("security");
$this->load->helper("form");
}

public function checkUsername($username) {
echo "<script>alert('CODEIGNITER RESPONDED!');</scirpt>";
}

}

?>

提前致谢!

最佳答案

在开始使用 ajax 之前,需要了解 ajax 需要从 PHP 获得良好的输出才能获得完美的调用结果。在您的 codeigniter Controller 中,您正在回显一个脚本标签。请不要在使用 ajax 调用时这样做。

示例 Codeigniter Controller 函数

<?php

class Test extends CI_Controller {

public function __construct() {
parent::__construct();
$this->load->helper("url");
$this->load->library("form_validation");
$this->load->helper("security");
$this->load->helper("form");
}

public function checkUsername($username) {
$output = array('status'=>200,"message"=>"Your Ajax is called");
header('Content-Type:application/json;');//Please do not forgot to set headers
echo json_encode($output);
}

}

这里 Controller 将给出完美的输出,javascript 可以轻松读取它

对于 jQuery

<script type="text/javascript">
$.get('<?php echo base_url("index.php/Test/checkUsername?username=xyz"); ?>',function(data){
alert(data['message']);
});
</script>

关于javascript - Ajax 不会调用 Codeigniter Controller 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37497574/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com