Php 如何使用ajax使用jquery提交post数据?
我很难让ajax与jquery和codeigniter一起工作。我已经学习了多个教程,但似乎都不管用。我试图实现一个upvote按钮,它使用ajax发送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
<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;
});
});