CodeIgniter Retour HTML en Réponse JSON
Je suis en train de construire un ajax panier dans codeigniter, et maintenant je suis face à un problème: comment obtenir la réponse en HTML, et l'encoder comme une réponse JSON, puis ajouter la page du panier, avec la réponse.
Voici le code javascript:
$('.addtocart').on('click', function (event) {
event.preventDefault();
var AddedQty = parseInt($('#attr-quantity').val());
$('#shoppingcart div.cart, #shoppingcart div.loading').remove();
$('#shoppingcart').append('<div class="loading"></div>');
shoppingcart.open();
$.post('/mywebsite/cart/add', {
itemId: $('.addtocart').data('itemId'),
quantity: AddedQty
}, function (response) {
var html = $(response.ShoppingCartHtml).html();
shoppingcart.update(html);
shoppingcart.close();
});
});
Et c'est le code pour le panier de contrôleur:
public function add() {
$this->load->model('cart_model');
$id = $this->input->post('itemId');
$qty = $this->input->post('quantity');
$cart = $this->cart->contents();
$exists = false;
$rowid = '';
foreach ($cart as $item) {
if ($item['id'] == $id) {
$exists = true;
$rowid = $item['rowid'];
$qty = $item['qty'] + $qty;
}
}
if ($exists) {
$this->cart_model->update_item($rowid, $qty);
} else {
$this->cart_model->add_cart_item();
}
$this->output->set_content_type('application/json');
$this->output->set_output(json_encode(array('ShoppingCartHtml'=> $theHTMLResponse)));
}
Et le code ci-dessous est un exemple de code (le code) que je veux encoder comme la réponse JSON, comme le ShoppingCartHtml:
<li>
<h3><?php echo $ProductName; ?></h3>
</li>
Jusqu'à présent, j'ai essayé de faire écho à la vue, et l'encoder à l'aide de la json_encode, mais j'obtiens une erreur.
Voici ce que je suis venu avec:
$theHTMLResponse= echo $this->load->view('pages/minicart.php', $data); //THIS LINE THROWS ERROR (I know that I cannot assign what echo-ed into a variable).
$this->output->set_content_type('application/json');
$this->output->set_output(json_encode(array('ShoppingCartHtml'=> $theHTMLResponse)));
L'exemple de la bonne réponse que nous voulions, c'est comme les codes ci-dessous (comme indiqué dans Firebug) :
{"MinicartHtml":"\u003cli\u003e\r\n\u003ch3\u003eThe Product Name\u003c/h3\u003e\u003c/li\u003e"}
Qui, si j'ai inspecté dans la console de Firebug, sur le JSON onglet, il devrait montre la ShoppingCartHtml de codes html, délimitée par des guillemets, comme la ShoppingCartHtml Réponse JSON.
La question est: Comment puis-je encoder le ShoppingCartHtml du code html comme une réponse JSON?
PS: Mes excuses si ma question est source de confusion. L'anglais n'est pas ma tasse de thé. Même à ce type de question, j'ai besoin de presque 1 heure pour le terminer. Mais j'espère que vous allez comprendre ce que j'ai demandé.
Vous en remercie d'avance.
OriginalL'auteur Paradiso Trickster | 2013-09-09
Vous devez vous connecter pour publier un commentaire.
Vous avez été près d'obtenir ce droit. Juste un couple d'ajustements nécessaires.
bien sûr, "définir le 3ème paramètre à true pour faire retourner des données" 🙂
OriginalL'auteur JohnP
Je suppose que
shoppingcart
est quelque chose de retourné à partir de $('#...'). Ensuite, vous devez seulement ceci:OriginalL'auteur Marek
Les premiers à passer à la troisième paramètre à votre avis d'appel comme
true
Également utiliser
$.getJSON
et remplacer$(response.ShoppingCartHtml).html();
deresponse.ShoppingCartHtml
vues
OriginalL'auteur M Khalid Junaid