Bewertung von Erfolg Daten von jQuery .ajax() und return true/false, basierend auf dem Ergebnis

Grüße stackoverflow-Gemeinschaft. Ich bin ein lange Zeit lurker, erste mal poster. Ich habe mehrere Stunden recherche, die versuchen, zu überwinden, die unten problem, offensichtlich ohne Erfolg, wie bin ich hier veröffentlichen. Es sollte angemerkt werden, dass ich nur Codierung mit jQuery(oder ein JS für diese Angelegenheit) für ein paar Monate.

Mein Ziel ist es diese: schreiben Sie ein einfaches Formular mit .ajax () und dann entweder alert(Erfolg!) und true zurück (reload der Seite), wenn der Erfolg kehrte Daten == 'Success', oder füllen Sie ein div mit einer Fehlermeldung und zurück, sonst false.

Habe ich versucht viele verschiedene Ansätze, die ich gefunden bei meinen Recherchen, aber egal was ich probiert habe, bekomme ich eine Auswertung des Erfolgs: Daten true zurück.

Hier ist mein neuester Versuch:

$(document).ready(function() {

    $('#error').hide();

    $("#submit_result").submit(function() { 
        var postString = $('#submit_result').formSerialize(); /* Function from jQuery.form.js */
        $.ajax({
            url: 'inc/submit_speedtest.inc.php', 
            type:'POST',
            data:postString,
            success: function(msg) {
                $('#error').html(msg);
            },
            error:function() {
                $('#error').html('Error validating CLid!');
            }
        });
        if ($('#error').html() == 'Success') {
            alert('Done');
            return true;
        }
        $('#error').show();
        return false;
    });
});

Funktioniert alles Super, außer:

if ($('#error').html() == 'Success') {
alert('Done');
return true;
}

Dieser test nie zu true ausgewertet wird. Ich habe versucht es viele verschiedene Möglichkeiten, einschließlich Dinge wie

if $("#error:contains('Success')") {

Inhalt submit_speedtest.inc.php:

    <?php

session_start();

include('lib.inc.php');
restrict_unauthorized();

if(!empty( $_POST['clid'])) {
    $clid = trim($_POST['clid']);
    $result = check_clid($clid);
    echo $result;
}else{
    echo "No CLid!";
}

?>

Den check_clid () - Funktion führt eine einfache MySQL-Abfrage, um sicherzustellen, dass CLid vorhanden ist. Wie gesagt, das scheint gut zu funktionieren

Ich hoffe das macht alles Sinn, und ich Schätze jede Hilfe, die stackoverflow-Gemeinschaft bieten kann mir.

Bearbeiten

Danke Euch beiden für euren input. Ich war in der Lage, zu erwerben nützliche Informationen, die sowohl Ihre Antworten. Sie gab mir ein besseres Verständnis, wie die callbacks gearbeitet.

Hier ist der jQuery code, den ich endete mit:

$(document).ready(function() {

    $('#status_msg').hide();

    $("#submit_result").submit(function(e){
        e.preventDefault();
        var postString = $('#submit_result').formSerialize(); 
        $.ajax({
            url: 'inc/submit_speedtest.inc.php', 
            type:'POST',
            data:postString,
            success:function(msg) {
                $('#status_msg').html(msg);
                $('#status_msg').show();
            },
            error:function() {
                $('#status_msg').html('<font color="red">Error validating CLid!</font>');
                $('#status_msg').show();
            }
        });
    });
});

PHP macht den rest der Arbeit, und es funktioniert alles einwandfrei.

Nochmals vielen Dank.

InformationsquelleAutor Lance Shaw | 2012-03-02

Schreibe einen Kommentar