2015-08-14 12 views
9

Das ist eine Schaltfläche, auf deren klicken bestimmte Aufgabe durch Ajax ausgeführt wird. durch Ajax bekomme ich ein Ergebnis im JSON-Format, dieSchaltfläche ausblenden bei Rückgabe des AJax-Werts

["25", 16, "ABC", "DEF", 1] 

nun in der Konsole wie folgt aussieht ich will, dass, wann immer es 1 in der 4. Position i paar Tasten verstecken will. der Code, i schrieb

$.ajax({ 
    type: 'post', 
    url: 'script.php', 
    dataType: 'json', 
    data: { 
     txt: txtbox, 
     hidden: hiddenTxt 
    }, 
    cache: false, 
    success: function(returndata) { 

     if(returndata[4]=='1') 
     { 
      $("#first").hide(); 
      $("#second").hide(); 
      $("#third").hide(); 
     } 

    }, 
    error: function() { 
     console.error('Failed to process ajax !'); 
    } 

    }); 

die, wenn die Bedingung scheint zu funktionieren, weil ich versuchte, eine Warnung in der, wenn die Bedingung zu setzen und es funktionierte, aber die Tasten noch angezeigt bekommen.

der Code i für Test mit Alert-Box versucht, ist

if (returndata[4] == 1) 
    { 
     alert("1"); 
    } 

Kann jemand bitte sagen, warum das passiert ist

+0

'if (returndata [4] === 1)' – JohnnyAW

+0

Versuchen Sie, die Zitate aus der ganzen '1' zu entfernen, wie es aussieht, wie es als eine ganze Zahl zurückgegeben wird, nicht eine Zeichenkette: 'returndata [4] === 1' (auch, triple gleichzeichen verwenden) –

+0

Vielleicht müssen Sie' returnData.data [4] === 1'? – aup

Antwort

1

Ich weiß, das ist das, was Sie getan haben. Ich bin in einer Herausforderung, Ihr Problem zu lösen. Lass uns eins nach dem anderen machen. Erster Versuch, versuchen Sie dies anstelle Ihres Codes:

$.post("script.php", {txt: txtbox, hidden: hiddenTxt}, function (res) { 
    alert("Response: " + res); 
    alert("Type: " + typeof res); 
}); 

Bitte lassen Sie mich Ihre Ergebnisse in den Kommentaren wissen. Prost.

0

Sie haben eine "1" als string in Ihrem Verstecken Abschnitt gefunden, aber in der Alert-Abschnitt übereinstimmte eine 1 als number. Dies könnte das Problem sein.

Vermeiden Sie diese

if(returndata[4]=='1') 

verwenden

if(returndata[4] == 1) 
+1

Bitte gehen Sie durch die Kommentare. –

+0

@ prem. Dies ist nicht das Problem. In JavaScript wird '1' & 1 beide als wahr gesetzt, wenn die Daten für 1 oder 1 zurückgegeben werden. Wir vergleichen nicht mit Typgleichheit - https://jsfiddle.net/yf6Lud24/ –

0

versuchen, Änderungen in Ihrer Ajax-Methode folgen ...

  1. Verwendung GET-Methode anstelle von POST
  2. keine Notwendigkeit, Datentyp zu verwenden: 'json'

    $.ajax({ 
    type: 'GET', 
    url: 'script.php', 
    data: { 
        txt: txtbox, 
        hidden: hiddenTxt 
    }, 
    cache: false, 
    success: function(returndata) { 
    
        if(returndata[4]=='1') 
        { 
         $("#first").hide(); 
         $("#second").hide(); 
         $("#third").hide(); 
        } 
    
    }, 
    error: function() { 
        console.error('Failed to process ajax !'); 
    } 
        }); 
    

Grüße Prem

0

In Kommentaren I thatyou sehen haben Ajax-Ergebnis geschrieben, das ist:

["25", 16, "ABC", "DEF", 1] 

Ihr Problem ist ein Vergleich, der ist === "1" (Ich sah diese Art von Vergleich in Frage, wenn ich Sterne ted schreiben diese Antwort) und Sie haben 1 als Nummer nicht "1" als Zeichenfolge, === bedeutet Typ Vergleich, so in der richtigen Weise gibt es falsch, weil 1 ist Numbet und "1" ist Zeichenfolge. Sie können dieses Problem beheben, indem auf sich ändernde Bedingung:

returndata[4]===1 

oder ohne Typprüfung:

returndata[4]==1 

das ist es.

Um diese Antwort besser zu verstehen, habe ich einige Beispiele vorbereitet.

console.log("1 === '1'"); 
 
console.log(1==='1'); 
 

 
console.log("1 === 1"); 
 
console.log(1===1); 
 

 

 
console.log("1 == '1' (no type comarision)"); 
 
console.log(1=='1');

Verwandte Themen