Ich arbeite an meiner einfachen Testseite, die voller Formulare war. Wie einer von euch vor ein paar Tagen gepostet hat, benutze ich jetzt jquery, um Ajax zu verwenden und zu vermeiden, die Seite zu aktualisieren, sobald einer der Submit-Button gedrückt wird. Also befolge nur die Vorlage Ich habe hier gefunden: http://jquery.malsup.com/form/jquery ajax form + ajax setTimeout funktioniert nicht
Ich habe hinzugefügt, um meine Webseite dieses Stück Code:
<script>
$(document).ready(function() {
// bind 'myForm' and provide a simple callback function
$('#myForm').ajaxForm(function() {
alert("Thank you for your comment!");
});
});
</script>
Was ich erleben ist, dass jetzt die Formen perfekt funktionieren, aber die Ajax-setTimeout-Funktion funktioniert nicht mehr! Wenn ich den vorherigen Code entferne, funktioniert der Ajax setTimeout wieder. Habt ihr einen Hinweis darauf, warum es so ist?
<script type="text/javascript">
function myff(abc)
{
var
$http,
$self = arguments.callee;
if (window.XMLHttpRequest) {
$http = new XMLHttpRequest();
} else if (window.ActiveXObject) {
try {
$http = new ActiveXObject('Msxml2.XMLHTTP');
} catch(e) {
$http = new ActiveXObject('Microsoft.XMLHTTP');
}
}
if ($http) {
$http.onreadystatechange = function()
{
if (/4|^complete$/.test($http.readyState)) {
document.getElementById('ReloadThis3').innerHTML = $http.responseText;
setTimeout(function(){$self(abc);}, 1000);
}
};
$http.open('GET', 'loadfunc.php' + '?abc=' + abc);
$http.send(null);
}
}
</script>
neuer Code:
<script>
$(document).ready(function() {
$('#s1hvform1').ajaxForm(function() {
});
sendreq(abc);
});
function sendreq(abc)
{
$.get('loadfu.php?abc='+abc,function(r)
{
$('#ReloadThis2').html(r);
setTimeout(function(){sendreq(abc);},1000); });
}
</script>
<div id="ReloadThis2">Loading data...</div>
Da weder '$ http' noch '$ self' dies tun, ist es leicht irreführend (obwohl ich denke, dass es nicht genau falsch ist), sie so zu benennen, wie Sie es getan haben. –
Ich denke, Sie wollen "bind" verwenden: setTimeout (this.bind (this, abc), 1000) –