2016-06-09 2 views
1

habe Ich habe zwei loadmore Skripte, die jeweils von verschiedenen Tasten aufgerufen werden. Die zweite Schaltfläche lädt den Inhalt, der mit der ersten Schaltfläche geladen werden soll, während die erste Schaltfläche ordnungsgemäß funktioniert. DieseNur ein Ajax-Skript funktioniert, während ich zwei

ist, wie mein HTML-Einrichtung (nur der entsprechende Code ohne php innerhalb etcetera)

<div class="row" id="loadprojects"> 
    <div class="col-md-2 col-md-offset-5" id="loadmoreprojects"> 
     <a href="javascript:;"><button class="btn btn-info">Bekijk meer projecten</button></a> 
    </div> 
</div> 

<div class="row" id="loadnews"> 
    <div class="col-md-2 col-md-offset-5" id="loadmore"> 
     <a href="javascript:;"><button class="btn btn-info">Bekijk meer websites</button></a> 
    </div> 
</div> 

In der Fußzeile diese Scripts geladen werden:

<script src="assets/js/loadmore.js"></script> 
<script src="assets/js/loadmore_projects.js"></script> 

Und das sind meine beiden Skripte :

(loadmore.js)

/* 
Meer websites laden 
*/ 
var limit = 3; 

$('#loadmore').click(function() { 
    limit += 3; 

    ajax(); 

}); 

var posts = document.getElementById('loadnews'); 

function ajax() { 
    $.ajax({ 
    url: 'includes/loadmore.php', 
    type: "POST", 
    data: {limit: limit}, 
    success: function(data){ 
     loadnews.innerHTML = data; 
    }, 
    error: function(jqXHR, exception) { 
       if (jqXHR.status === 0) { 
        alert('Not connect.\n Verify Network.'); 
       } else if (jqXHR.status == 404) { 
        alert('Requested page not found. [404]'); 
       } else if (jqXHR.status == 500) { 
        alert('Internal Server Error [500].'); 
       } else if (exception === 'parsererror') { 
        alert('Requested JSON parse failed.'); 
       } else if (exception === 'timeout') { 
        alert('Time out error.'); 
       } else if (exception === 'abort') { 
        alert('Ajax request aborted.'); 
       } else { 
        alert('Uncaught Error.\n' + jqXHR.responseText); 
       } 
      } 
    }); 
} 

ajax(); 

(loadmore_projects.js)

/* 
Meer projecten laden 
*/ 
var limit = 4; 

$('#loadmoreprojects').click(function() { 
    limit += 4; 

    ajax(); 

}); 

var posts1 = document.getElementById('loadprojects'); 

function ajax() { 
    $.ajax({ 
    url: 'includes/loadmore_projects.php', 
    type: "POST", 
    data: {limit: limit}, 
    success: function(data){ 
     loadprojects.innerHTML = data; 
    }, 
    error: function(jqXHR, exception) { 
       if (jqXHR.status === 0) { 
        alert('Not connect.\n Verify Network.'); 
       } else if (jqXHR.status == 404) { 
        alert('Requested page not found. [404]'); 
       } else if (jqXHR.status == 500) { 
        alert('Internal Server Error [500].'); 
       } else if (exception === 'parsererror') { 
        alert('Requested JSON parse failed.'); 
       } else if (exception === 'timeout') { 
        alert('Time out error.'); 
       } else if (exception === 'abort') { 
        alert('Ajax request aborted.'); 
       } else { 
        alert('Uncaught Error.\n' + jqXHR.responseText); 
       } 
      } 
    }); 
} 

ajax(); 

ich alle Namen überprüft, warum ist es, dass, wenn ich auf die zweite Schaltfläche klicken, wird das erste Skript initiiert? Und nicht die richtige, die dieselbe ID wie die Schaltfläche hat.

+0

, wenn diese die vollständigen Dateien Ihr Problem sind, ist alles, was Sie in globalen Bereich deklarieren, das eine das andere zu überschreiben wird. Bedeutung 'limit' von' loadmore.js' wird durch 'limit' in' loadmore_projects.js' überschrieben, dasselbe gilt für deine 'ajax()' Funktion –

+0

@PatrickEvans In Ordnung, es ist schon eine Weile her, dass ich das benutzt habe Code. ajax(); wird vor der Funktion aufgerufen, also denke ich, dass das ein Eigenschaftsname anstelle eines Funktionsnamens ist? – twan

Antwort

1

Erläuterung.

Variablen Um zu vermeiden, überschreiben können wir immidiatly aufrufen Funktionsdeklaration wie folgt verwenden:

(function(){}(
..code goes there 
)); 

Da alle Funktionen ihrer eigenen Sicht Umfang haben, variable aus anderen Funktion wird diese Variablen nicht sehen und sie nicht außer Kraft setzen. Sie können auch Ihren Code verbessern, indem Sie den "Use Strict" -Modus hinzufügen, um das Code-Verhalten zu verdeutlichen. Gerade smth wie folgt schreiben:

(function(){}(
'use strict'; 

..code goes there 
)); 

Try yto immer Ihren Code mit Funktionen wickeln Verwendung von globalen Variablen zu vermeiden.

try solche Variante:

(function(){ 
/* 
Meer websites laden 
*/ 
var limit = 3; 

$('#loadmore').click(function() { 
    limit += 3; 

    ajax(); 

}); 

var posts = document.getElementById('loadnews'); 

function ajax() { 
    $.ajax({ 
    url: 'includes/loadmore.php', 
    type: "POST", 
    data: {limit: limit}, 
    success: function(data){ 
     loadnews.innerHTML = data; 
    }, 
    error: function(jqXHR, exception) { 
       if (jqXHR.status === 0) { 
        alert('Not connect.\n Verify Network.'); 
       } else if (jqXHR.status == 404) { 
        alert('Requested page not found. [404]'); 
       } else if (jqXHR.status == 500) { 
        alert('Internal Server Error [500].'); 
       } else if (exception === 'parsererror') { 
        alert('Requested JSON parse failed.'); 
       } else if (exception === 'timeout') { 
        alert('Time out error.'); 
       } else if (exception === 'abort') { 
        alert('Ajax request aborted.'); 
       } else { 
        alert('Uncaught Error.\n' + jqXHR.responseText); 
       } 
      } 
    }); 
} 

ajax(); 
}()); 

(function(){ 
/* 
Meer projecten laden 
*/ 
var limit = 4; 

$('#loadmoreprojects').click(function() { 
    limit += 4; 

    ajax(); 

}); 

var posts1 = document.getElementById('loadprojects'); 

function ajax() { 
    $.ajax({ 
    url: 'includes/loadmore_projects.php', 
    type: "POST", 
    data: {limit: limit}, 
    success: function(data){ 
     loadprojects.innerHTML = data; 
    }, 
    error: function(jqXHR, exception) { 
       if (jqXHR.status === 0) { 
        alert('Not connect.\n Verify Network.'); 
       } else if (jqXHR.status == 404) { 
        alert('Requested page not found. [404]'); 
       } else if (jqXHR.status == 500) { 
        alert('Internal Server Error [500].'); 
       } else if (exception === 'parsererror') { 
        alert('Requested JSON parse failed.'); 
       } else if (exception === 'timeout') { 
        alert('Time out error.'); 
       } else if (exception === 'abort') { 
        alert('Ajax request aborted.'); 
       } else { 
        alert('Uncaught Error.\n' + jqXHR.responseText); 
       } 
      } 
    }); 
} 

ajax(); 
}()); 
+0

Dies funktioniert leider nicht. – twan

+0

Bearbeitet. Versuche noch einmal. – Vitalii

+0

Danke, es hat funktioniert! Was macht das einwickeln (function())? – twan

0

Sie definieren zwei Funktionen mit dem gleichen Namen ajax(), ändern Sie eine von ihnen.

+0

oder wickeln Sie sie in ein Leben. – Seth

Verwandte Themen