Sivustollani käyttäjillä on mahdollisuus jakaa asioita ryhmien kesken. Ajax-pyyntö ei (ilmeisesti) kuitenkaan tule palvelimelle asti. Js-funktioon asti päästään. Mikä tassä voisi olla vikana? Muut ajax-pyynnöt toimivat normaalisti.
Jaa tekstiä: <input id="text_group_1" type="text" name="text" size="30" /> <input type="button" value="Jaa" onclick="javascript:share('group', 1, 6)" />
Share-funktio:
function share(with_, id, fromid) { $.post("/eMessenger2/ajax.php?event=share", { from: fromid, what: what, sharing: sharing, withname: with_, withid: id }); }
Ajax.php:
switch($_GET["event"]) { // ... case "share": echo "Perille tuli"; $what = 0; switch ($_POST["what"]) { case "text": $what = 1; break; case "pic": $what = 2; break; case "vid": $what = 3; break; case "location": $what = 4; break; default: break; } $db->execute("INSERT INTO sharings (fromid, sharingtype, time, content, withid) VALUES(?,?,NOW(),?,?)", array($_POST["fromid"], $what, $_POST["sharing"], $_POST["withid"])); echo "Jaettu"; break; //... }
Kysyisin, että millä tavalla olet debugannut tuota? Mitä selaimen kehittäjäkonsoli esimerkiksi sanoo aiheesta?
Firebug kertoo errorista jQuery-filussa:
firebug kirjoitti:
TypeError: 'click' called on an object that does not implement interface HTMLElement.
...w(),xc=/\?/,yc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})...jquery.min.js (line 4)
Itselläni kun kokeilin Chromella niin tulee Illegal Invocation virheilmoitus.
Kun saat virheen jQueryssä, niin yleensä vika on koodissa jossa sitä kutsutaan.
Jos katsot stack tracesta miltä oman koodisi riviltä virheeseen johtanut kutsu tulee, niin se on tietenkin tuo jossa kutsut jQueryä. Jos laitat breakpointin siihen ja katsot miltä koodisi muostama objekti näyttää, niin:
{from: 6, what: undefined, sharing: jQuery.fn.init[0], withid: "group"}
Luultavasti haluaisit sharingiin jotain muuta kuin jQuery-funktion.
Kiitos, mulla oli sharing-muuttujassa arvo:
var sharing = $("#" + what + "_sharediv_" + with_ + "_" + id);
Oli siis unohtunut .val() tuolta lopusta.
Aihe on jo aika vanha, joten et voi enää vastata siihen.