(X)HTML, JavaScript, DHTML, XML, CSS Client scripting tehnologije, Dynamic HTML, Cascading Stylesheets, XML i standardi |
|
Alati teme | Način prikaza |
03. 11. 2014. | #1 |
član
Certified
Datum učlanjenja: 06.09.2012
Poruke: 64
Hvala: 0
342 "Hvala" u 10 poruka
|
Ajax problem sa json-om
Pozdrav imam jedan problem ajax mi ne vraca neke podatke preko jsona
u PHP imam kod public static function activeButton($sess_id) { if(isset($_SESSION['basket'][$sess_id])) { $id = 0; $label = "Remove from basket"; } else { $id = 1; $label = "Add to basket"; } $out = "<a href=\"#\" class=\"add_to_basket"; $out .= $id == 0 ? " red" : null; $out .= "\" rel=\""; $out .= $sess_id."_".$id; $out .= "\">{$label}</a>"; return $out; } i on daje link <a class="add_to_basket" rel="3_1" href="#">Add to basket</a> 3 je id iz baze a 1 je vrednost koja sluzi za menjanje imena linka ako je 1 onda je Add to basket ako je 0 onda je Remove from basket. $sess_id je id iz baze za odgovarajuci proizvod. To sve radi perfektno. Problem je u Ajax preko json-a ne mogu da dobijem id proizvoda npr. 3_1 ne vraca mi 3 uopste kod je sledeci: $(document).ready(function (){ function refreshSmallBasket(){ $.ajax({ url: "mod/basket_small_refresh.php", dataType: 'json', success: function (data) { //foreach data arrayk is key v is value $.each(data, function (k, v){ //in basket_left id for each classes for reffering index k and span filling with value v $("#basket_left ." + k + " span").text(v); }); }, error: function(xhr, status, errorThrown) { //alert("An error has occurred"); console.log("Proble Load"); console.log("Error: " + errorThrown); console.log("Status: " + status); console.dir(xhr); } }); } //check that class exist i our case add_to_basket class if($(".add_to_basket").length > 0){ //on click in this class add_to_basket $(".add_to_basket").click(function(){ //triiger is add_to_basket class var trigger = $(this); //parma is add_to_basket basket class on click and get attribut rel our rel is exapmple re=2_1 var param = trigger.attr("rel"); console.log("rel is " + param); //this rel split with _ then we have 2 and 1 var item = param.split("_"); console.log("Split rel is " + item); //add ajax $.ajax({ type: 'POST', url: 'mod/basketprod.php', dataType: 'json', data: ({ id: item[0], job: item[1] }), success: function (data){ //create new rel example rel=2_0 var new_id = data.id + '_' + data.job; console.log("Id is " + data.id); console.log("rel is " +data.job); console.log("new rel is " + new_id); //if id different then job if(data.job != item[1]){ //if job 0 if(data.job == 0){ //add to add_to_basket class new rel with new id trigger.attr("rel", new_id); //add new text trigger.text("Remove From Basket"); //add class red trigger.addClass("red"); } else{ trigger.attr("rel", new_id); trigger.text("Add to basket"); trigger.removeClass("red"); } refreshSmallBasket(); } }, error: function(xhr, status, errorThrown) { //alert("An error has occurred"); console.log("Proble Load"); console.log("Error: " + errorThrown); console.log("Status: " + status); console.dir(xhr); } }); //not loading link return false; }); } }); U drugom po redu ajax-u, json ne vraca id. iznad ovog ajaxa ima kod za umizanje rel var param = trigger.attr("rel"); dobijem tacnu vrednos 3_1, u ajaxu razdvojim rel var new_id = data.id + '_' + data.job; i dobijem 3,1 a kad hocu da spojim rel ponovo var new_id = data.id + '_' + data.job; onda dobijem rel=undefined_0, id ne mogu nikako da vratim kako bi uzeo proizvod iz baze. Molim za pomoc Poslednja izmena od stanke : 03. 11. 2014. u 13:27. |
03. 11. 2014. | #2 |
banned
Professional
Datum učlanjenja: 04.06.2005
Poruke: 371
Hvala: 0
738 "Hvala" u 83 poruka
|
Koristi bbcode kako bi formatirao kod.
Objasni malo bolje problem. Postavi i kod basketprod.php fajla, da li on vraća id, npr. u Chrome u Developer Tools-a, u okviru Network tab-a, ili u konzoli ukljući logovanje XMLHttpRequests i pogledaj šta vraća isti php fajl. Da nisi hteo: Kôd:
var new_id = item[0] + '_' + data.job;
__________________
Don't look at me; I'm lost too. “If you can't dazzle them with brilliance, baffle them with bul*s**t.” |
03. 11. 2014. | #3 |
član
Certified
Datum učlanjenja: 06.09.2012
Poruke: 64
Hvala: 0
342 "Hvala" u 10 poruka
|
Sad id radi prikazuje al izgleda da nece json da ga prosledi dobijam Status Code:304 Not Modified, adresa sajta je http://www.mojtestdomen.net84.net
Prilikm odabira kategorije pojavljuju se knjige iz te kategorije klikom na Add to basket treba cena pdv i kolicina da se prosledi a Remove from basket da se ukloni i kada se odabere iz iste kategorije ili zdruge da se saberu cene ili oduzmu i to se sve prikazuje u polju u delu Your Basket |
04. 11. 2014. | #4 |
banned
Professional
Datum učlanjenja: 04.06.2005
Poruke: 371
Hvala: 0
738 "Hvala" u 83 poruka
|
Sa servera dobijaš samo job ( {"job":0} ), dakle problem potraži u php fajlu basketprod.php. Mada ako je id isti kao u rel atributu, zašto ga onda ponovo vraćaš sa servera?
__________________
Don't look at me; I'm lost too. “If you can't dazzle them with brilliance, baffle them with bul*s**t.” |
04. 11. 2014. | #5 |
član
Certified
Datum učlanjenja: 06.09.2012
Poruke: 64
Hvala: 0
342 "Hvala" u 10 poruka
|
Isti je al ih razdvajam jel napr rel=2_0 kad ih razdvojim baskedprod.php imafunkciju koja uzima cenu naziv knjige za taj id a kad je 0 onda je Add to basket a kad je 1 onda je Remove from basket. Al ne znam zasto nece id da vrati kod iz basketprod.php je
if (isset($_POST['job']) && isset($_POST['id'])) { $out = array(); $job = $_POST['job']; $id = $_POST['id']; $objCatalogue = new Catalogue(); $product = $objCatalogue->getProduct($id); if (!empty($product)) { switch($job) { case 0: Session::removeItem($id); $out['job'] = 1; break; case 1: Session::setItem($id); $out['job'] = 0; break; } echo json_encode($out); } } ?> A iz Session klaase je class Session { public static function setItem($id, $qty = 1) { //create session basket with index of id of specific product and quantity $_SESSION['basket'][$id]['qty'] = $qty; } public static function removeItem($id, $qty = null) { if($qty != null && $qty < $_SESSION['basket'][$id]['qty']) { $_SESSION['basket'][$id]['qty'] = ($_SESSION['basket'][$id]['qty'] - $qty); } else { //set to null basket if removet item $_SESSION['basket'][$id] = null; unset($_SESSION['basket'][$id]); } } //end class } Poslednja izmena od stanke : 04. 11. 2014. u 13:15. |
04. 11. 2014. | #6 |
banned
Professional
Datum učlanjenja: 04.06.2005
Poruke: 371
Hvala: 0
738 "Hvala" u 83 poruka
|
Ok, job menjaš, a id ostaje isti.
Ne prosleđuješ id. Npr. ispod linije: PHP kôd:
PHP kôd:
__________________
Don't look at me; I'm lost too. “If you can't dazzle them with brilliance, baffle them with bul*s**t.” |
08. 11. 2014. | #7 |
član
Certified
Datum učlanjenja: 06.09.2012
Poruke: 64
Hvala: 0
342 "Hvala" u 10 poruka
|
Hvala, vratio je Id
|
|
|