[英]How to remove all HTML from JSON Response
我將json用於php javascript。 但是當javascript回叫時,它在每個地方都顯示HTML。
碼:
$('#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>
它在json響應后面顯示我的html,是否想知道為什么? 我嘗試使用ob_clean()但無法正常工作。
在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,'') );
........
........
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.