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.