我有这个脚本
<script>
$('a[name=deleteButton]').on('click', function () {
arr=[];
var arr = $("input[name='post[]']:checked").map(function() {
return this.value;
}).get();
var content = $(this).parents('tr').find('.key').html();
alert(content);
$.ajax({
type: "post",
url: "http://localhost/partner/app/deleteRowUsingApiKey/delete",
cache: false,
data:{empId : content},
success: function(response){
try{
if(response){
parent.slideUp('slow', function() {$(this).remove();});
alert(response.responseText);
}
}catch(e) {
alert('Exception while request..');
}
},
error: function(){
alert('Error while request..');
}
});
});
</script>
这是删除控制器
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class DeleteRowUsingApiKey extends CI_Controller
{
function __construct()
{
parent::__construct();
}
public function delete(){
$empId = $this->input->post('empId');
$status = "true";
echo $status;
}
}
这是视图
<tbody id="dashboard_table_body">
<?php if($admin_activation_status!='disabled' && $tot!=0)
{ $i=0; foreach ($connct_data as $row): ?>
<tr>
<td><input type='checkbox' name='post[]' value="<?php echo ++$i; ?>"></td>
<td><?php echo date('d-M-Y', strtotime($row['connct_CreationTime']));?></td>
<td><?php echo $row['connct_serviceName'];?></td>
<td><?php echo $row['connct_websiteUrl'];?></td>
<td class="key"><?php echo $row['connct_passKey'];?></td>
<td><?php echo $row['responseURL'];?></td>
<td><a name="deleteButton" href=""><i class="icon-remove text-danger"></i></a></td>
<!-- <td align='center' width='30'><a data-toggle='modal' href='#' ><i class='icon-remove text-danger'></i></a></td> -->
</tr>
<?php endforeach; } ?>
</tbody>
我能够提醒变量内容,内容的价值是我想要传递给控制器的。但是我无法与控制器通信。它不会返回&#34; true&#34;。< / p>
我总是在请求时遇到错误&#39;相反,如果进入真的&#39;条件。
我正在做的是错的。我的代码中有任何错误。请帮我解决这个问题。
谢谢
答案 0 :(得分:0)
您遵循的方法是正确的。检查一下config / routes.php(无论你是否给出了
)正确的控制器路径。)
**In the controller:**
return true;
if(response){ } [is correct method in ajax]
答案 1 :(得分:0)
data:'empId=' + content
应该是
data: {empId: content}
这会正确地将数据从js发送到服务器
如果您需要更多变量,那么您应该这样做:
data: {empId: content, nameofVar2: valueOfVar2, nameOfVar3: valueOfVar3}
然后在控制器中放入:
$empId = $this->input->post('empId');
$nameofVar2 = $this->input->post('nameofVar2');
$nameofVar3 = $this->input->post('nameofVar3');
etc...
您还应该在控制器中对您的返回值进行json编码:
echo json_encode($status);
并明确设置在jQuery中返回的数据类型(所以你绝对肯定的是什么作为返回值)
因此在jQuery中应该是这样的:
$.ajax({
type: "post",
url: "http://localhost/partner/app/deleteRowUsingApiKey/delete",
cache: false,
data: {empId: content},
dataType: 'json'
如果不起作用,您可以尝试:
error: function(ts){
alert(ts.responseText);
}
并查看错误中的实际响应。
<强>更新强>
我会试试这个:
我有这个脚本
<script>
$('a[name=deleteButton]').on('click', function () {
arr=[];
var arr = $("input[name='post[]']:checked").map(function() {
return this.value;
}).get();
var content = $(this).parents('tr').find('.key').html();
alert(content);
$.ajax({
type: "post",
url: "http://localhost/partner/app/deleteRowUsingApiKey/delete",
cache: false,
data:{empId : content},
dataType: 'json',
success: function(response){
alert('success function');
alert('respone from success function=' + response);
},
error: function(){
alert('Error while request..');
}
});
});
</script>
这是删除控制器
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class DeleteRowUsingApiKey extends CI_Controller
{
function __construct()
{
parent::__construct();
}
public function delete(){
$empId = $this->input->post('empId');
$status = "true";
echo json_encode($status);
}
}