Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Ajax ja jQuery

Sivun loppuun

Triton [20.06.2009 00:44:29]

#

Yritin harjotella ajaxin käyttöä jQueryn kanssa, mutta jostain syystä en saanut php:n tuottamaan vastausta millään tuotua JS-sovellukseeni. Koodini oli seuraava:

$(document).ready(function () {
				$(".linkki").click(function () {
					alert($.ajax({
							type: "POST",
							url: "server.php",
							data: "luku=5"
					}).responseText;
				});
			});
<?php

		echo $_POST['luku'] * 6;

?>

Jostain syystä ohjelma palauttaa tyhjän alert-ikkunan...

tsuriga [20.06.2009 02:57:20]

#

Fx Error console kirjoitti:

Error: missing ) after argument list
Source File: test.html
Line: x, Column: y
Source Code:
}).responseText;

Väärässä järjestyksessä kaksi viimeistä }). Siitä huolimatta se kyllä heittää tyhjää. Yksinkertaiset AJAX-haut on helpompi hoitaa .get ja .post -wrappereilla, $.postilla tuo menisi näin:

$(document).ready(function () {
                $(".linkki").click(function () {
                    $.post(
                            "server.php",
                            { luku: 5 },
                            function(data) {
                                alert("Tulos: " + data);
                            }
                        );
                });
            });

Tosin virhekonsoliin tulostuu viesti vastauksen muotovirheestä, syytä tälle voinee joku viisaampi valaista. Ei auttanut vaikka annoin datatyypiksi kolmantena parametrina tekstin (vaatii siis vähintään HTML-muotoa, eli div-tagi ympärille?).

Kray [20.06.2009 08:51:42]

#

Tämä on nyt vain arvaus, mutta joskus ajaxia säätäessäni oli tuollaista ongelmaa sen takia, että skripti antaa väärän mime-tyypin, text/xml. Tätä sitten selainpuolen skripti käsittelee kai dom-puuna, jota ei suoraan voi tulostaa. Ratkaisu saattaisi siis olla seuraava: header("mime-type: text/plain"); (vedin ulkomuistista, korjatkaa jos olen väärässä).

Triton [21.06.2009 11:31:27]

#

Mistähän mahtaa johtua, että nuo jQueryn ajax-käskyt ei toimi Firefoxilla?

Chiman [21.06.2009 11:41:24]

#

Triton kirjoitti:

Mistähän mahtaa johtua, että nuo jQueryn ajax-käskyt ei toimi Firefoxilla?

"Ei toimi" on heikoin mahdollinen vikailmoitus. Miten ei toimi? Mitään ei tapahdu? Tuleeko virhekonsoliin (Tools -> Error console) jotain virheilmoituksia?

Mikä Firefoxin versio? Käytössä jokin javascriptin estävä lisäosa kuten NoScript?

Triton [21.06.2009 12:49:28]

#

Huomasinkin, että minulta puuttui "return false", joka aiheutti Firefoxin toimimattomuuden. Mutta jostain syystä php-skripti ei saa jQueryn lähettämiä arvoja, vaikka niitä post-taulukon kautta etsinkin...

tsuriga [21.06.2009 14:20:31]

#

Jos olet liittänyt click-tapahtuman linkkiin niin kyllä kai se AJAX-haku on tehty, mutta seuraavaksi selain on vain ladannut heti linkin osoittaman sivun. Millä koodilla yrität lähettää ja vastaanottaa arvoja? Seuraava toimii testatusti:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd">
<html>
 <head>
  <title>Conforming HTML 4.01 Strict Template</title>
  <script type="text/javascript" src="jquery-1.3.2.min.js"></script>
  <script type="text/javascript">

$(document).ready(function () {
                $(".linkki").click(function () {
                    $.post(
                            "test.php",
                            { test: 5 },
                            function(data) {
                                alert(data);
                            },
                            "text"
                        );
                });
            });

  </script>
 </head>
 <body>
  <button class="linkki">Laske!</button>
 </body>
</html>
<?php
/* coding=utf-8 */
header('Content-type: text/plain');

echo ($_POST['test'] * 6);

?>

Triton [21.06.2009 14:29:40]

#

Tarkkaan en tiedä, mikä oli vikana, mutta sain joka tapauksessa toimimaan...

Kiitos vain avusta!

kayttaja-2791 [21.06.2009 14:55:42]

#

Kerta Firefoxia jo käytetään, kannattaa asentaa Firebug-lisäosa. Todella hyödyllinen eritoten js-kehityksessä.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta