Come inviare parametri in base a quale pulsante si fa clic in modal?

Demo e codice completo è simile a questo: https://jsfiddle.net/oscar11/o5qn5gum/5/

Il mio codice HTML è come questo:

 

Il mio codice Javascript è simile a questo:

 $(document).ready(function(){ $("button").click(function(){ $.ajax({ //type: 'POST', //url: 'script.php', success: function(data) { // alert(data); // $("p").text(data); var priceModal1 = '[{"@attributes":{"Code":"SGL","Total":"200000"},"DayPrice":{"Date":"2016-05-26","Rate":"200000"}},{"@attributes":{"Code":"DBL","Total":"200000"},"DayPrice":{"Date":"2016-05-26","Rate":"200000"}}]'; var priceModal2 = '[{"@attributes":{"Code":"SGL","Total":"225000"},"DayPrice":{"Date":"2016-05-26","Rate":"225000"}},{"@attributes":{"Code":"DBL","Total":"225000"},"DayPrice":{"Date":"2016-05-26","Rate":"225000"}}]'; var priceModal3 = '[{"@attributes":{"Code":"SGL","Total":"410000"},"DayPrice":{"Date":"2016-05-26","Rate":"410000"}},{"@attributes":{"Code":"DBL","Total":"410000"},"DayPrice":{"Date":"2016-05-26","Rate":"410000"}}]'; var isitable = ''; isitable += '


'; isitable += '

'; isitable += '
'; console.log(isitable); $("#tes").html(isitable); } }); }); $('#priceModal').on('show.bs.modal', function(e) { //console.log('yes'); var json = $(this).attr("data-json"); $(".modal-body").html(json); console.log("JSON »» From priceModel Element "+json); console.log(JSON.parse(json)); }) });

Quando si fa clic sul pulsante “Click me”, verrà visualizzato tre pulsante. Guarda jsfidde.

Quando si fa clic sul pulsante “Test get parameter json array 1”, desidero inviare il parametro priceModal1 a modal. Quando si fa clic sul pulsante “Test get parametro json array 2”, voglio inviare parametro priceModal2 al modale Quando si fa clic sul pulsante “Test get parametro json array 3”, voglio inviare parametro priceModal3 a modal Parametro priceModal1, priceModal2 e priceModal3 contengono json array. lo voglio

 console.log("JSON »» From priceModel Element "+json); console.log(JSON.parse(json)); 

in $('#priceModal').on('show.bs.modal', function(e) {.

Ma non sta funzionando.

Sebbene io $(this).attr("data-json"); usando: $(this).attr("data-json");

Qualche soluzione per risolvere il mio problema?

Grazie

this all’interno dell’evento show.bs.modal , si riferisce alla modale stessa, mentre l’attributo dei dati json è impostato sul pulsante. Puoi accedere al pulsante che ha triggersto l’evento su e.relatedTarget .

 var json = $(e.relatedTarget).attr('data-json'); 

Inoltre, l’accesso a un attributo data- con $.data analizzerà automaticamente JSON. Quindi potresti scrivere:

 var json = $(e.relatedTarget).data('json'); 

… e salta JSON.parse , poiché json ora è un object e non una stringa.