我使用json for php javascript。但是当javascript回调时,它会显示HTML Every Where。
代码:
$('#buyNow').click(function(){
$('#loading').html('<i class="fa fa-spinner fa-pulse fa-3x fa-fw margin-bottom"></i>');
$('#group-pay').hide();
var nameproduct = $('#myModalLabel1').text();
$.get(base_url+"dashboard/shop",{ buy: idProduct },function(data){
var obj = $.parseJSON(data);
alert(data);
if(obj.Code == 200){
$('#loading').html('<div class="alert alert-success">Success <strong>'+nameproduct+'</strong></div>');
$('#group-pay').show();
}else{
$('#loading').html('<div class="alert alert-danger">Error</div>');
$('#group-pay').show();
}
});
});
我的PHP:
$vatpham = $_REQUEST['buy'];
if($vatpham >= 400 && $vatpham <= 609)
{
$json = array("Code" => "200");
echo json_encode($json);
}
错误回复显示是:
{"Code":"200"}<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Cửa hàng</title>
<link href="http://bieberkieu.com/project/demo/css/bootstrap.min.css" rel="stylesheet">
<link href="http://bieberkieu.com/project/demo/css/datepicker3.css" rel="stylesheet">
<link href="http://bieberkieu.com/project/demo/css/styles.css" rel="stylesheet">
<link href="http://bieberkieu.com/project/demo/css/styles.css" rel="stylesheet">
<!--Icons-->
<script src="http://bieberkieu.com/project/demo/js/lumino.glyphs.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet">
<!--[if lt IE 9]>
<script src="js/html5shiv.js"></script>
<script src="js/respond.min.js"></script>
<![endif]-->
</head>
<body>
它显示我的html背后的json响应,任何想知道为什么?我尝试ob_clean()但没有工作。
答案 0 :(得分:0)
在codeigniter控制器类中,创建一个方法,只生成一个生成json的代码并返回它,并且永远不会从该方法加载任何视图:
// dashboard/shop
public function shop () {
// in this method should only returned jSON respond
// instead of any view
$vatpham = $_REQUEST['buy'];
if($vatpham >= 400 && $vatpham <= 609)
{
$json = array("Code" => "200");
echo json_encode($json); //<--- only return this
}
// remove below code if have, or create another method to only return
// json respond
$this->load->view('somefilename', $data);
}
或者如果你不能删除它,你需要替换所有的html内容并留下JSON,但这个解决方案并不明智:
$.get(base_url+"dashboard/shop",{ buy: idProduct },function(data){
// remove all the HTML content that start with `<` till the end
var obj = JSON.parse( data.replace( /\<.+/ig,'') ); // or $.parseJSON( data.replace( /\<.+/ig,'') );
........
........
});