我正在使用HMVC codeigniter。我想第一次使用jquery ajax。当我使用POST时,它会在使用GET时响应我的数据时给出未定义的错误。
$.ajax({
type: "POST",
url: filelink+"cart/add_cart_item",
data: {"product_id":id,"quantity":qty,"ajax":"1"},
dataType: "json",
success: function(msg){
alert( "Data Saved: " + msg );
},
error: function(jqXHR, textStatus, errorThrown){
alert(textStatus + " " + errorThrown);
}
});
google搜索和SO-ing后我到目前为止所尝试的内容
我的文件网址可以直接访问。我检查了一下。给予回应。
Firebug为同一个文件提供了500个内部服务器错误。
使用Get正在回复我
在数据类型中添加了json
控制器功能
class Cart extends CI_Controller { // Our Cart class extends the Controller class
function __construct()
{
parent::__construct();
$this->template->set('controller', $this);
}
function _remap()
{
$uri2 = $this->uri->segment(2);
if (is_numeric($uri2) OR $uri2 == FALSE) {
$this->index();
} else if ($uri2 == 'add_cart_item') {
$this->add_cart_item();
} else if ($uri2 == 'show_cart') {
$this->show_cart();
}
}
function add_cart_item(){
echo "asdfsadfdsf";
exit;
}
}
任何人都可以帮帮我吗?
答案 0 :(得分:0)
您的问题可能有原因
您可能正在使用未加载的模型 模型中可能存在一些代码问题 您可能无法从模型中返回任何内容并回复它 此外,如果您需要数据,请使用echo json_encode($ data)
答案 1 :(得分:0)
有时,当您将网站加载为https://example.com时,会出现此问题,但您的ajax调用中的网址为http://example.com。
答案 2 :(得分:0)
管理以找到解决方案。问题是由于与FORM一起发送的CI_TOKEN。那是不存在的,并且由于POST方法给出500内部服务器错误。我在我的视图文件中添加了以下内容。
<?php echo form_open_multipart(); ?>
<?php echo form_close(); ?>
并使用ajax post请求发送ci_token。
var ci_token = formObj.find('input[name=ci_token]').val();
var qty = 1;
var dataString = 'product_id='+ id + '&quantity=' + qty + '&ajax=' + 1
+'&ci_token=' + ci_token;
这解决了这个问题。我不确定但这被称为CSRF相关的一些问题
谢谢
答案 3 :(得分:0)
你已经使用了_remap函数,在得到$ uri2之后有一个if检查,它检查你在ajax请求中传递的数量变量,它可能有整数值,因为显然可能包含一些整数。
$this->uri->segment();
返回:
product_id=id
quantity=qty
ajax=1
你可以通过调用
取值2$uri2 = $this->uri->segment(2);
它将向您返回数量,并且您没有在代码中定义index()函数,这会产生500错误
function _remap()
{
$uri2 = $this->uri->segment(2);
if (is_numeric($uri2) OR $uri2 == FALSE) {
$this->index();
} else if ($uri2 == 'add_cart_item') {
$this->add_cart_item();
} else if ($uri2 == 'show_cart') {
$this->show_cart();
}
}