Wysyłanie json za pomocą jQuery

0

Witam, mam pewien problem z projektem zaliczeniowym.
Od razu mówię, że jestem w technikum(nie bawiłem się nigdy poważniej w webdev) i nie mam nauczyciela, którego mogę się o cokolwiek spytać. Google też średnio mi pomógł...
Wyczytałem, że można zrobić to za pomocą AJAX'a, więc pierwsze co, to rzuciłem się na jQuery.
Próbuję przesłać zmienną z JS do PHP, lecz zawsze dostaję parsererror i ajax nie wysyła nic POST'em.
JS/JQ:

function send_post_price()
{
  //var b_price = document.getElementById('cena_out').innerHTML;
  var b_price = $('#cena_out').text();
  alert(b_price); // Wyswietla dobrze
  //$.post("konfigurator.php",{basket_price: b_price})
  var ajaxRes = $.ajax({
    url: "konfigurator.php",
    method: "POST",
    data: {basket_price : b_price},
    dataType: "json"
  });

  ajaxRes.done(function( msg ) {
    alert(msg);
});

ajaxRes.fail(function( jqXHR, textStatus ) { //Zawsze wzraca parsererror
    alert( "Request failed: " + textStatus );
});
}

PHP:

if(!isset($_POST['basket_price']))
	print('<script> alert("Nie wiem czemu, ajax nie przesyła POST");</script>');
else 
{
	$total_price = floatval($_POST["basket_price"]);
	print('<script> alert("'.$total_price.'");</script>');
}
0

W metodzie $.ajax() dataType to typ odpowiedzi jakiej się spodziewasz - jQuery oczekuje, że dostanie w odpowiedzi JSON i od razu parsuje odpowiedź jako taki (w metodzie .done(msg) msg to będzie gotowy, sparsowany obiekt), a jeśli się to nie uda, to uruchamia metodę fail().
Oprócz tego, jeśli używasz jQuery starszego niż 1.9.0, to nie należy korzystać z parametru method, tylko type, który domyślnie ustawiany jest na GET - to tłumaczyłoby dlaczego $_POST jest pusty.

Reasumując, aby na szybko sprawdzić, czy to, co napisałem, to faktycznie to, co "dolega" Twojej apce, proponuję zmienić method na type i dataType zmienić na script lub html :).

Przy okazji - w dokumentacji jest to dość fajnie opisane: http://api.jquery.com/jquery.ajax/

[Adam]

0

Dziękuję za odpowiedź, lecz już sobie poradziłem. Lekka reorganizacja formularza, który wysyła teraz cenę danego produktu (i kilka innych rzeczy) za pomocą JSON bezpośrednio do POST'a
Jak mówiłem, tak jest, jak się wskakuje na "głęboką wodę" mając zerowe pojęcia nt. danej technologii :P

0

Nie mogę edytować, więc przepraszam za post pod postem.
Wcześniej miałem dataType ustawiony na html i nic to nie dało.
Próbowałem na jQuery 1-4-4 i na 2-1-4

1 użytkowników online, w tym zalogowanych: 0, gości: 1