In bottom of my index.php I have a Javascript
function between paired <script>
tags. I have a click handler that calls the function that makes a Prototype.js
Ajax request.
This version does not work (no request is made), although the myFunction
itself is called.
function myFunction(fr, fw) {
new Ajax.Request('/ascript', {
method: 'post',
开发者_运维问答 parameters: { a: fr, b: fw },
onSuccess: function(transport) { },
onFailure: function(request) { }
});
}
However when I add the alert("something"); line the ascript php script is called.
function myFunction(fr, fw) {
new Ajax.Request('/ascript', {
method: 'post',
parameters: { a: fr, b: fw },
onSuccess: function(transport) { alert("here"); },
onFailure: function(request) { }
});
}
Might it be some weird whitespace problem? Is there an error in my syntax?
You should try onComplete
event. Prototype sometimes doesn't fall into either onSuccess
or onFailure
however all request will be covered by onComplete
also try wrapping the ajax request with Try - Catch
block, it might help.
So I've found the problem. The problem was in how I added the eventhandler to my "button"
Initially (on both examples given in my question) I had:
echo "<a href='' ><p id='button' onclick='myFunction(" .$a .", " .$b.");'>Click</p></a>";
The surrounding <p>
with a link tag was ofcourse a bad idea ...
This works:
echo "<a href='' onClick='Event.stop(event);'><p id='button' onclick='myFunction(" .$a .", " .$b .");'>Click</p></a>";
Thanks to all for your answers. I guess the moral of the story is, look eaven farther from the Javascript itself, look where it gets called and what could be broken there.
精彩评论