【问题标题】:Codeigniter - No result after sending jQuery post dataCodeigniter - 发送 jQuery 发布数据后没有结果
【发布时间】:2012-05-31 06:04:12
【问题描述】:

我正在使用 jQuery 的 AJAX 和 Codeigniter PHP 框架制作一个注册表单,但是 codeigniter 并不重要,如果你看到奇怪的 echo form_open(); 或其他奇怪的东西,别担心,它们都是代码点火器。

好的,这是我的代码问题。我在下面使用 jquery 尝试了简单的帖子(在 php 代码中,其他所有内容都被省略并添加了一个简单的 echo 'hello, world!'; 函数,它可以工作/给我一个 hello, world!):

 $.post( 'ajax_signup_username' ,function(result){

                $(span_error).html(result);

            } );

但是当我在其中传递一个帖子数据时,它不起作用(不输出任何结果,注意我使用的是完整的PHP代码编写的below-below ):

$.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);

            } );

    }

【问题讨论】:

  • 您是否收到 JavaScript 错误?当您直接向 URL 发出 post 请求时会发生什么?
  • 另外请不要打扰PDO代码,关键是在参数中发送一个post数据后,它不起作用。
  • @ExplosionPills Firefox 中的 Web 开发人员工具栏给了我一个 POST 服务器错误,但我尝试在浏览器中导航代码并且它存在。
  • 如何将 url 'ajax_signup_username' 路由到函数?这是 CodeIgniter 的魔法吗?
  • @PHPForLife 在浏览器中导航是不够的。您必须使用浏览器或其他用户代理发出相同的发布请求。

标签: php jquery codeigniter


【解决方案1】:

在我的笔记本电脑前做了很长时间的傻事后,我发现这是一个 IS 代码点火器问题,我打开了导致问题的 CSRF 保护。关闭 CSRF 功能后,一切正常,千万不要再犯同样的错误,孩子们!干杯! :D

【讨论】:

  • 我不会推荐 CodeIgniter 用于新的开发。由于 Ellislab 决定不再支持它,从 2.1.3 版本到 2.1.4 版本的一些错误修复花了将近 2 年的时间。但是,是的,对我而言,CSRF 功能也引起了问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-04
  • 1970-01-01
  • 1970-01-01
  • 2015-04-29
相关资源
最近更新 更多