我正在尝试使用AJAX在服务器上执行操作
jQuery(document).on('click','a.edit', function (e) {
var id=$(this).prop('id');
var params="id="+id;
$.ajax({
data:params,
method: 'post',
url:base_url+'ajax/GetCategoryDetails/',
beforeSend: function(){
//alert(1)
},
complete: function(){ },
success: function(resultSet)
{
console.log( typeof resultSet );
console.log( resultSet );
console.log(resultSet.responseJSON.SUCCESS);
var result = jQuery.parseJSON(resultSet.responseJSON )
//alert(resultSet.SUCCESS);
console.log(resultSet.responseJSON );
//alert(result);
//App.stopPageLoading();
if(resultSet.ERROR)
{
alert(2);
}
else if(resultSet.SUCCESS)
{
alert(resultSet.DATA.name);
//$('#category').html(x.name);
}
}
});
});
然后在执行操作后在服务器端我必须发回一些响应,为此我已经创建了一个名为resultset的数组,我发送回来像这样
public function GetCategoryDetails()
{
if($_POST)
{
$this->load->model('category');
$category=array('id'=>$this->input->post('id'));
$cat=$this->category->getCategoryDetails($category);
if($cat)
{
$resultSet['SUCCESS'] = 1;
$resultSet['DATA'] = $cat;
}
else
{
$resultSet['ERROR'] = array('1');
$resultSet['MESSAGE'] = array('Could not get Category Details. Try Later');
}
//var_dump( json_encode($resultSet));exit;
echo json_encode($resultSet);
}
}
它看起来像var dump中的以下内容:
string '{"SUCCESS":1,"DATA":{"id":"31","name":"asdasdasd"}}' (length=51)
现在删除vardump后,当它返回到ajax时,resultSet看起来如下所示
alert(resultSet);
使用jQuery.parseJSON(resultSet);
后,它会在警报中返回[object Object]
JSON没有被解析或者可能是什么问题?
答案 0 :(得分:0)
如果您收到服务器的回复,请尝试console.log(resultSet.responseJSON.SUCCESS);
,您将在该回复中获得responseJSON
个密钥。
因此,如果您尝试访问resultSet.SUCCESS
,您将获得undefined
,因为SUCCESS
不是resultSet
的密钥,而是resultSet.responseJSON
的密钥。
因此,您的数据位于resultSet.responseJSON.DATA
。
答案 1 :(得分:0)
success: function(resultSet)
{
console.log( typeof resultSet );
console.log( resultSet );
console.log(resultSet.responseJSON.SUCCESS);
var result = jQuery.parseJSON(resultSet.responseJSON )
//alert(resultSet.SUCCESS);
console.log(resultSet.responseJSON );
//alert(result);
//App.stopPageLoading();
if(resultSet.ERROR)
{
alert(2);
}
else if(resultSet.SUCCESS)
{
alert(resultSet.DATA.name);
//$('#category').html(x.name);
}
}
我犯的错误是我解析了对象$resultSet
并将其存储在$result
中,仍然使用resultSet.ERROR
,resultSet.DATA.name
和resultSet.SUCCESS
它应该像result.ERROR
,result.DATA.name
,result.SUCCESS