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...
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?).
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ä).
Mistähän mahtaa johtua, että nuo jQueryn ajax-käskyt ei toimi Firefoxilla?
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?
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...
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>
Tarkkaan en tiedä, mikä oli vikana, mutta sain joka tapauksessa toimimaan...
Kiitos vain avusta!
Kerta Firefoxia jo käytetään, kannattaa asentaa Firebug-lisäosa. Todella hyödyllinen eritoten js-kehityksessä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.