Ajax post方法在codeigniter中不起作用

时间:2012-06-16 11:39:23

标签: jquery ajax codeigniter

Ajax帖子在我的代码中不起作用我不知道原始代码(控制器代码)究竟是什么问题请帮助我     

class Ajax_post extends CI_Controller {

function __construct()
{
parent::__construct();  
$this->load->helper(array('url'));
}

function index()
{

$this->load->view('ajax_post');
}

function post_action()
{

if(($_POST['username'] == "") || ($_POST['password'] == ""))
{
  $message = "Please fill up blank fields";
  $bg_color = "#FFEBE8";

}elseif(($_POST['username'] != "myusername") || ($_POST['password'] != "mypassword")){
  $message = "Username and password do not match.";
  $bg_color = "#FFEBE8";

}else{
  $message = "Username and password matched.";
  $bg_color = "#FFA";
}

$output = '{ "message": "'.$message.'", "bg_color": "'.$bg_color.'" }';

}
}

?>

这是我的观看页面代码

    <div id="form_message"></div>
    <form name="ajax_form" id ="ajax_form" method="post">

      Username/Email:*<input type="text" name="username" id="username" size="30" /><br/><br/>
      Password:*<input type="password" name="password" id="password" size="30" /><br/><br/>
      <input type="submit" value="Submit" name="login_submit" id="login_submit" onClick="getData();"/>

  </form>
</div>

这是我的javascript代码(ajax_post.js)

  function getData(){

    var username=$("#username").val();
    var password=$("#password").val();      
    $.ajax({
    type: "GET",
    url: "http://localhost/CodeIgniter/index.php/ajax_post/post_action",
    dataType: "json",
    data: "username="+username+"&password="+password,
    cache:false,
    success: 
      function(data){
          alert(data);
          }
     // $("#form_message").html(data.message).css({'background-color' : data.bg_color}).fadeIn('slow'); 


});
}
 </body>

我整天坚持这件事......

请有人告诉我正确的方法来执行控制器和js代码。

6 个答案:

答案 0 :(得分:3)

您没有发出POST请求,请尝试

$.ajax({
    type: "POST", //notice the change

type指定为POST,您就可以发出POST请求

或者您可以使用$.post

此处链接指向$.ajax

修改

单击提交按钮,您需要取消表单提交的默认行为,如

function getData() {
  var username = $("#username").val();
  var password = $("#password").val();
  $.ajax({
    type:"POST",
    url:"http://localhost/CodeIgniter/index.php/ajax_post/post_action",
    dataType:"json",
    data:{username:username,password:password},
    cache:false,
    success:function (data) {
      alert(data);
    }  
  });
 return false;
}

答案 1 :(得分:2)

事实上,正如您所提到的type: "GET",您正在提出'GET'请求。这是你修改过的js代码。

function getData() {
  var username = $("#username").val();
  var password = $("#password").val();
  $.ajax({
    type:"POST",
    url:"http://localhost/CodeIgniter/index.php/ajax_post/post_action",
    dataType:"json",
    data:"username=" + username + "&password=" + password,
    cache:false,
    success:function (data) {
      alert(data);
    }
    // $("#form_message").html(data.message).css({'background-color' : data.bg_color}).fadeIn('slow');
  });
}

编辑: 尝试以下代码。从提交按钮

中删除onclick属性及其值
$('#ajax_form').submit(function(){
  var username = $("#username").val();
  var password = $("#password").val();
  $.ajax({
    type:"POST",
    url:"http://localhost/CodeIgniter/index.php/ajax_post/post_action",
    dataType:"json",
    data:"username=" + username + "&password=" + password,
    cache:false,
    success:function (data) {
      alert(data);
    }
    // $("#form_message").html(data.message).css({'background-color' : data.bg_color}).fadeIn('slow');
  });
  return false;
})

答案 2 :(得分:1)

我知道这里没有工作。

使用

onClick="getData(); return false;" // in your submit button

function getData(e){
e.preventDefault();
//your code

success: 
  function(data){
      alert(data);
return false;
      }
error : function(){
return false;
}
//stops the default dom form submission after success

确保加载了jquery!

并确保如果您正在使用其他javascripts,任何函数都没有错误,请使用控制台窗口查看js错误

答案 3 :(得分:0)

首先你要使用$ _POST。使用$ this-&gt; input-&gt; post('var')或get。 其次你没有返回json数据。 请改用它。

$.ajax(’url’).done(function(data){
$(’#message’).html(data);
 })

答案 4 :(得分:0)

您是否尝试过检查确切的回调数据?我不亲自构造一个json字符串。 您可以尝试制作数据数组

$data = array();
$data['message'] = //assign here ;
$data['bg_color'] = //assign here ;

然后使用json_encode输出。

echo json_encode($data);

该代码将为您生成json字符串。 您可以轻松地抓取js回调中的数据,如

data.message
data.bg_color

这段代码对我很有帮助。希望它有所帮助。

答案 5 :(得分:0)

function getData(){

var username=$("#username").val();
var password=$("#password").val();      
$.ajax({
type: "POST",
url: "http://localhost/CodeIgniter/index.php/ajax_post/post_action",
dataType: "json",
data: {username : username , password :password},
cache:false,
success: 
  function(data){
      alert(data);
      }
 // $("#form_message").html(data.message).css({'background-color' : data.bg_color}).fadeIn('slow'); 

}); }