Php 如何使用ajax使用jquery提交post数据?

Php 如何使用ajax使用jquery提交post数据?,php,codeigniter,jquery,Php,Codeigniter,Jquery,我很难让ajax与jquery和codeigniter一起工作。我已经学习了多个教程,但似乎都不管用。我试图实现一个upvote按钮,它使用ajax发送post数据,并将其插入数据库。非常感谢您的帮助 我的观点是: <pre> <?php foreach($query->result() as $row): ?> <div> <form action="" method="post"> <input type="hidden" name

我很难让ajax与jquery和codeigniter一起工作。我已经学习了多个教程,但似乎都不管用。我试图实现一个upvote按钮,它使用ajax发送post数据,并将其插入数据库。非常感谢您的帮助

我的观点是:

<pre>
<?php foreach($query->result() as $row): ?>
<div>
<form action="" method="post">
<input type="hidden" name="story_id" value=<?php echo $row->id; ?>>
<input type="submit" name="story_id" class="button" id="submit_btn" value=<?php echo      $row->id;?>>
</form>
</div>
<?php endforeach; ?>
</pre>
$.ajax({
        url: "<?php echo base_url('cyoa/upvote'); ?>",
        type: 'POST',
        data: $("#storyform").serialize(),
        success: function() 
            {
            $("#upvote").hide();
            }
    });
$(document).ready(function(){
$('#submit_btn').live('click',function(){

    var form_data = {
                    $story_id: $('#story_id').val()
                };

                $.ajax({
                    type: "POST",
                    url: baseurl+"controller_name/upvote",
                    dataType: "json",
                    data : form_data,
                    success: 
                        function(data){

                            if(data.validation_result == "passed"){

                                $("#upvote").hide();


                            }
                            else{
                                //form_validation errors
                                }
                        }
                    });

        return false;   
    });
});

>
>
我正在使用的jquery脚本:


$(文档).ready(函数(){
$(“.button”)。单击(函数(){
变量形式_数据={
story_id:$(this.val())
};
$.ajax({
url:“”,
键入:“POST”,
数据:表格数据,
成功:函数()
{
$(“#向上投票”).hide();
}
});
返回false;
});
});

我强烈建议您看看这个插件(并使用它):


您可以使用表单序列化将数据传递给php,如下所示

首先将ID“storyform”指定给表单标签

<form id="myform" action="" method="post">
$.ajax({
url:“”,
键入:“POST”,
数据:$(“#故事形式”).serialize(),
成功:函数()
{
$(“#向上投票”).hide();
}
});

最好的方法是序列化表单数据并将其发送到服务器:

<pre>
<?php foreach($query->result() as $row): ?>
<div>
<form action=" controller_name/upvote" method="post">
<input type="hidden" name="story_id" id = "story_id" value=<?php echo $row->id; ?>>
<input type="submit" name="story_id" class="button" id="submit_btn" value=<?php     echo      $row->id;?>>
</form>
</div>
<?php endforeach; ?>
 </pre>

$(文档).ready(函数(){
$(“.button”)。单击(函数(){
var form_data=$(“#myform”).serialize();
$.ajax({
url:“”,
键入:“POST”,
数据:表格数据,
成功:函数()
{
$(“#向上投票”).hide();
}
});
返回false;
});
});
要访问表单,请为其提供一个id:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Controller_name extends CI_Controller {

function __construct()
{
    parent::__construct();

    //loading libraries
    $this->load->helper(array('form','url'));

    $this->load->library('form_validation');


}
//##############################################################################
    function upvote(){


    //setting validation rules
    $this->form_validation->set_rules('story_id', 'story Id', 'required|xss_clean');


    if ($this->form_validation->run() == true){

        //if validations ok, send the  data to  database
        $this->load->model('your_model');

        $params = ($this->input->post('story_id');

        $query = 'INSERT INTO table_name (story_id) VALUES(?)';
        $result = $this->your_model_name->method_name($query,$params);

        echo '{"validation_result": "passed"}';

    }
    else{
        $output = '{"story_id":"'.form_error('story_id').'"}';

        echo $output;
        }

}
}
?>

尝试使用json对象

查看


我看到的第一个问题(嗯,我看到了一些)是在循环中输出表单,那么您想使用哪一个呢?我正在尝试为每个帖子启用upvote按钮。每次投票我都必须有一个新的脚本吗?我试过了,但仍然不起作用。我不知道怎么回事。upvote是cyoa控制器的一种方法:公共函数upvote(){$this->load->model($Voting\u model');$message=$this->Voting\u model->upvote();$this->load->view($ajax\u upvote');}在控制器方法中添加一个
var\u dump($\u POST)
,我尝试了var_dump,但似乎无法让它产生输出。很抱歉,我是这样一个noob。var_dump正在生成以下内容:数组(1){[“story_id”]=>string(4)“5678”}
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Controller_name extends CI_Controller {

function __construct()
{
    parent::__construct();

    //loading libraries
    $this->load->helper(array('form','url'));

    $this->load->library('form_validation');


}
//##############################################################################
    function upvote(){


    //setting validation rules
    $this->form_validation->set_rules('story_id', 'story Id', 'required|xss_clean');


    if ($this->form_validation->run() == true){

        //if validations ok, send the  data to  database
        $this->load->model('your_model');

        $params = ($this->input->post('story_id');

        $query = 'INSERT INTO table_name (story_id) VALUES(?)';
        $result = $this->your_model_name->method_name($query,$params);

        echo '{"validation_result": "passed"}';

    }
    else{
        $output = '{"story_id":"'.form_error('story_id').'"}';

        echo $output;
        }

}
}
?>
$(document).ready(function(){
$('#submit_btn').live('click',function(){

    var form_data = {
                    $story_id: $('#story_id').val()
                };

                $.ajax({
                    type: "POST",
                    url: baseurl+"controller_name/upvote",
                    dataType: "json",
                    data : form_data,
                    success: 
                        function(data){

                            if(data.validation_result == "passed"){

                                $("#upvote").hide();


                            }
                            else{
                                //form_validation errors
                                }
                        }
                    });

        return false;   
    });
});