我正在使用jQuery的AJAX和Codeigniter PHP框架进行注册表单,但是codeigniter并不重要,如果你看到奇怪的echo form_open();
或其他奇怪的东西,不要担心,他们'所有codeigniter。
好的,这是我的代码问题。我尝试使用下面的jquery进行简单的帖子(在PHP代码中,其他所有内容都省略了,并添加了一个简单的echo'hello,world!'; function,它可以工作/给我一个问候,世界!):
$.post( 'ajax_signup_username' ,function(result){
$(span_error).html(result);
} );
但是当我在其中传递一个帖子数据时,它不起作用(不输出任何结果,请注意我正在使用下面写的完整的PHP代码 ):
$.post( 'ajax_signup_username', {php_username_error:username_value} ,function(result){
$(span_error).html(result);
} );
我试过搜索SO,但提供的解决方案并没有解决这个问题。知道什么是错的吗?
以下是完整代码:
以下是html代码:
<body>
<?php $attr = array( 'onsubmit' => 'return final_val()' ); echo form_open('formValidation/signUp',$attr); ?>
<p>Username: <input type="text" onBlur="username_val()" value="<?php echo set_value('username')?>" name="username" maxlength="50" /><span name="username_error"><?php echo form_error('username'); ?></p></span>
<p>Email: <input type="text" onBlur="email_val()" value="<?php echo set_value('email')?>" name="email" maxlength="50" /><span name="email_error"><?php echo form_error('email'); ?></p></span>
<p>Password: <input type="password" onBlur="pass_val()" value="<?php echo set_value('pass')?>" name="pass" maxlength="50" autocomplete="off"/><span name="pass_error"><?php echo form_error('pass'); ?></p></span>
<p>Password Confirm: <input type="password" onBlur="pass_val()" value="<?php echo set_value('passconf')?>" name="passconf" maxlength="50" autocomplete="off" /><span name="passconf_error"><?php echo form_error('passconf'); ?></p></span>
<p><input type="submit" value="SIGN UP!" name="signup"/></p>
</form>
</body>
以下是php代码:
function ajax_signup_username(){
$username = $_POST['php_username_error'];
$uniqueUn = $this->db->prepare("SELECT * FROM iowfiwefwmember WHERE username=:username");
$uniqueUn->bindParam(':username', $username);
$uniqueUn->execute();
$count1 = $uniqueUn->fetch();
if( $count1 == FALSE ){
echo 'USERNAME AVAILABLE!';
}else{
echo 'USERNAME IS ALREADY USED!';
}
}
以下是javascript代码:
function username_val(){
$.ajaxSetup({ cache : false });
username_value = $("input[name='username']").val();
span_error = "span[name='username_error']";
//$(span_error).load('ajax_signup_username', {php_username_error:username_value}); <-- also doesn't work [ $.ajaxSetup() is set to POST ]
$.post( 'ajax_signup_username', {php_username_error:username_value} ,function(result){
$(span_error).html(result);
} );
}
答案 0 :(得分:1)
在我的笔记本电脑前长时间做哑脸后,我发现这个 IS 是一个codeigniter问题,我开启了CSRF保护,导致了这个问题。关闭CSRF功能后,它工作得很好,确保不要重复同样的错误,年轻人!干杯! :d