代码点火器:AJAX 请求没有响应数据



我在codeigniter中有一个简单的应用程序。在我看来,我向控制器发出了ajax POST请求,但我没有收到响应数据。我在网络选项卡中的chrome dev工具中检查了响应,消息是:没有可用于此请求的响应数据:我的观点:

<table class="table table-striped table-bordered">
<thead>
<tr>
<td>First</td>
<td>Sec</td>
<td>Th</td>
<td>Th</td>
</tr>
</thead>
<tbody>
<?php 
if(isset($result))
{
foreach($result as $value)
{
echo "<tr><td>". $value->cai . "</td><td>". $value->partner ."</td><td>". $value->spot ."</td><td><button type='button' id='".$value->cai."' class='btn btn-danger delete'>Delete</button></td></tr>";

}
}
?>
</tbody>
</table>
<?php echo $this->pagination_bootstrap->render(); ?>
<script>
$('.table').on('click','.delete',function(){

var id=$(this).attr('id');
var confirm_box=confirm('Sure?');
if(confirm_box === true)
{
$.ajax({
url: '<?php echo site_url('Tires_Crud/deleteCai'); ?>',
type: 'POST',
data: {
key: id
},
dataType: 'json',
success: function(data) {
console.log(JSON.parse(data));
}
});

}
});
</script>

我的控制器:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Tires_Crud extends MY_Controller
{


public function deleteCai()
{
$status = array(
"STATUS" => "true"
);
return  json_encode($status);
}
}

在我的配置文件中,CSRF保护被禁用!因为当它被启用时,ajax请求不起作用。提前感谢您的帮助!

此代码存在一些问题。

#1:您形成ajax请求的方式。如果type: 'POST'应该是method: 'POST',但这不仅仅是一个拼写错误,重要的是你要理解这些被称为HTTP方法,就像你在<form method='post'标记中指定的那样。如果不提供method,则假定为GET

https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods

此外,因为您指定了dataType:'json'-jquery,所以它将提供一个现成的解析JSON对象。无需您自己解析

$.ajax({
url: '<?php echo site_url('Tires_Crud/deleteCai'); ?>',
method: 'POST', // <-- change this from 'type' to 'method'
data: {
key: id
},
dataType: 'json',
success: function(data) {
// console.log(JSON.parse(data)); // <-- no need to parse - you have set dataType to be json, which means it will come to you already parsed
console.log(data);
})

#2-在你的PHP中,你会用$_POST['key']捕获你的key变量(你在ajax中发送的(-尽管在codeigner中你会得到这样的结果:

// codeigniter 2.x and 3.x
$this->input->post('key');  
// codeigniter 4
use CodeIgniterHTTPIncomingRequest;
$request = service('request');
$request->getPost('key');

#3-使用ajax,实际上是echo响应,而不是return响应:

public function deleteCai(){
$status = array(
"STATUS" => "true"
);
echo  json_encode($status);
}

相关内容

  • 没有找到相关文章

最新更新