我有以下AJAX:
$.ajax({
type: "POST",
url: base+"tree/plant/",
data:{
name: $('#field_treename').val(),
summary: $('#field_summary').val(),
description: $('#field_description').val(),
address: $('#field_url').val(),
category: $('#field_category').val()
}
})
.done(function(resp){
$('#plant-tree-inner').html(resp);
});
base
是我的基本网址,tree
是控制器,plant
是该控制器中的方法。
网址正确,控制器和方法到位,名称正确。我通过在plant
方法中回显一个字符串来确保这一点,并且在AJAX响应之后它在客户端上正确显示。
但是,没有任何帖子数据似乎到达服务器。
在echo $this->input->post('name');
方法中执行plant
会产生一个空字符串。执行var_dump($_POST)
会得到一个空数组。我甚至尝试为plant
方法提供参数,但这只会引发missing parameter
错误。
那么数据丢失的原因在哪里?为什么?
编辑:我现在看到我的问题是错的。它与CodeIgniter无关,因为数据根本没有发送。根据Javascript,字段值为undefined
,但它们肯定存在于HTML中:
<input type="text" id="field_treename" placeholder="Tree name" value="" />
答案 0 :(得分:0)
似乎jQuery库出了问题。 为了测试,try发送请求以避免它。
答案 1 :(得分:0)
你也可以尝试一下..
$.ajax({
type: "POST",
url: base+"tree/plant/",
data:{
name: $('#field_treename').val(),
summary: $('#field_summary').val(),
description: $('#field_description').val(),
address: $('#field_url').val(),
category: $('#field_category').val()
}
success:function(resp){
$('#plant-tree-inner').html(resp);
}
});
答案 2 :(得分:0)
尝试在非常基本的方法中模拟问题,比如在localhost或server中创建另一个目录,并按照下面的描述创建文件。
index.php中的
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>POST Sending Problem</title>
<script src="jquery-1.12.2.js"></script>
</head>
<body>
<a href="#" onclick="test(12, 'http://localhost/your_test_dir/your_phpfile.php')">Link</a>
<script src="custom_function.js"></script>
</body>
</html>
创建例如test.js
的js文件并将其作为测试
function test (id, base) {
$.ajax({
type: "POST",
data: {
'id': id
},
url: base,
success: function(data) {
alert(data);
},
error: function(data) {
alert('no data');
}
});
}
接下来创建一个php文件your_phpfile.php
<?php
if (isset($_POST['id'])) {
echo $_POST['id'];
} else {
echo "no-result";
}
?>
这可以帮助您确定问题。如果这样可以正常工作,请尝试使用codeigniter应用它。
祝你好运
答案 3 :(得分:-2)
使用此人..
var request = "name="+$('#field_treename').val()+"&"
request += "summary="+$('#field_summary').val()+"&"
request += "description="+$('#field_description').val()+"&"
request += "address="+$('#field_url').val()+"&"
request += "category="+$('#field_category').val()
并设置为data=request
。这应该有用。