jQuery的JSON不是将数据传递给正确的词
下面的脚本工作,据我可以告诉:jQuery的JSON不是将数据传递给正确的词
<script type="text/javascript" language="javascript">
$(document).ready(function() {
$('#add').bind('keypress', function(e) {
if(e.keyCode == 13){
var add = $("#add").val();
$.ajax({
type: "POST",
dataType: "JSON",
url: "<?php echo site_url("home/jsonAddData"); ?>",
data: add,
json: {title_posted: true},
success: function(data){
if(data.title_posted == true) { // true means data was successfully posted.
$("#success").append("Success").fadeIn(400);
} else if(data.title_posted == false) { // false means data failed to post.
$("#success").append('Failure').fadeIn(400);
}
}
});
}
});
});
</script>
我用下面的代码遇到的问题是,MySQL的insetion查询只是不会工作。它在表格中创建行并自动递增,但由于某些奇怪的原因,它不会将以上Javascript中的“var add”传递给下面的Ci脚本,并在db中执行插入操作。任何想法或想法?
<?php
class home extends CI_Controller {
function __construct() {
parent::__construct();
}
function index() {
$data = array();
$data['lists'] = $this->displayList();
$this->load->view('home', $data);
}
function displayList() {
$str = '';
$query = $this->db->query("SELECT * FROM data");
foreach ($query->result() as $row) {
$b = '<input name="completed" type="checkbox" />';
$a = $row->title . "<br>";
$str .= $b.$a;
}
return $str;
}
function jsonAddData() {
if($this->input->is_ajax_request()) {
$title = $this->input->post('title');
$query = $this->db->query("INSERT INTO data (title) VALUES ('$title')");
header('Content-type:application/json');
if($query) echo json_encode(array('title_posted' => true));
else echo json_encode(array('title_posted' => false));
}
}
}
?>
在
$.ajax({
...
data: {title: add}
不只是一个字符串
好吧...所以我需要将它作为JSON元素传递给它?它的工作原理虽然......谢谢你! – 2011-12-27 17:55:31
@MichaelGrigsby你没有传递一个“JSON元素” - 在JavaScript中没有这样的事情,无论如何,你没有发送[JSON](http://www.json.org/)到服务器 - 你传递了一个对象,该对象将被转换为URL编码的查询字符串,以便在POST请求中使用它。如果你想传递一个字符串,你需要做'data:'title ='+ escapeURIComponent(add)'。您应该阅读['.ajax'手册页](http://api.jquery.com/jQuery.ajax/)并了解[HTTP POST](http://en.wikipedia.org/wiki/POST_) (HTTP))请求。 – DaveRandom 2011-12-27 18:00:04
我的不好,大声笑它已经有两个月了,因为我已经使用Javascript。我仍然在学习它。这是JSON使用的格式....所以它只是一个对象?我知道POST和GET请求...自2009年以来我一直在使用PHP。 – 2011-12-27 18:03:27
你有HTML注入(跨站脚本)和SQL注入(数据库妥协),在该脚本安全漏洞。对输出到页面'htmlspecialchars($ row-> title)'的所有数据进行HTML编码并使用参数化查询来避免这种情况。 – bobince 2011-12-27 18:19:32