我正在尝试使用ajax和codeigniter检查用户名是否可用。我有问题从我的js中的codeingniter控制器获取响应。文件但没有成功。
以下是与问题相关的控制器功能:
if ($username == 0) {
$this->output->set_output(json_encode(array("r" => true)));
} else {
$this->output->set_output(json_encode(array("r" => false, "error" => "Username already exits")));
}
请放心,如果数据库中已存在用户名,我会得到1,如果不存在,则为0。
我有以下js.file
// list all variables used here...
var
regform = $('#reg-form'),
memberusername = $('#memberusername'),
memberpassword = $('#memberpassword'),
memberemail = $('#memberemail'),
memberconfirmpassword = $('#memberconfirmpassword');
regform.submit(function(e) {
e.preventDefault();
console.log("I am on the beggining here"); // this is displayed in console
var memberusername = $(this).find("#memberusername").val();
var memberemail = $(this).find("#memberemail").val();
var memberpassword = $(this).find("#memberpassword").val();
var url = $(this).attr("action");
$.ajax({
type: "POST",
url: $(this).attr("action"),
dataType: "json",
data: {memberusername: memberusername, memberemail: memberemail, memberpassword: memberpassword},
cache: false,
success: function(output) {
console.log('I am inside...'); // this is never displayed in console...
console.log(r); // is never shonw in console
console.log(output); is also never displayed in console
$.each(output, function(index, value) {
//process your data by index, in example
});
}
});
return false;
})
任何人都可以帮我在ajax中获取r的用户名值,这样我就可以采取适当的行动吗?
干杯
答案 0 :(得分:0)
基本上,你是说永远不会调用success
处理程序 - 意味着请求在某种程度上有错误。您应该添加error
处理程序,甚至可能是complete
处理程序。这至少会告诉你这个请求发生了什么。 (其他人提到过使用Chrome开发工具 - 是的,那样做!)
至于解析错误。您的请求期望json数据,但您的数据不能以json格式返回(它的格式为json,但没有内容类型标题,浏览器只会将其视为文本)。尝试将您的PHP代码更改为:
if ($username == 0) {
$this->output->set_content_type('application/json')->set_output(json_encode(array("r" => true)));
} else {
$this->output->set_content_type('application/json')->set_output(json_encode(array("r" => false, "error" => "Username already exits")));
}