2015-08-14 12 views
9

Il è un pulsante sul cui clic determinate attività vengono eseguite tramite ajax. tramite ajax ottengo un risultato in formato JSON che assomiglia a questo nella consolenascondi il tasto alla restituzione del valore Ajax

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

Ora voglio che ogni volta che c'è 1 in 4 ° posizione i desidero nascondere alcuni pulsanti. il codice che ho scritto è

$.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 !'); 
    } 

    }); 

la condizione di se sembra funzionare, perché ho provato a mettere una finestra di avviso all'interno del se la condizione e ha funzionato, ma sta ancora ricevendo visualizzati i pulsanti.

il codice ho provato per la prova con finestra di avviso è

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

Qualcuno può informi perché sta succedendo questo

+0

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

+0

Prova a rimuovere le citazioni da tutto il '1', in quanto sembra che viene restituito come un intero, non una stringa: 'returndata [4] === 1' (anche, usa il segno triple equals) –

+0

Forse hai bisogno di fare' returnData.data [4] === 1'? – aup

risposta

1

So che questo è quello che avete fatto. Sono in una sfida per risolvere il tuo problema. Facciamo uno per uno. Primo tentativo, prova questo al posto del tuo codice:

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

Per favore fatemi sapere i vostri risultati nei commenti. Saluti.

0

Hai abbinato un '1' come string nella sezione nascondi, ma nella sezione di avviso corrisponde a 1 come number. Questo potrebbe essere il problema.

evitare questo

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

Utilizzare questa

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

Si prega di passare attraverso i commenti. –

+0

@prem. Questo non è il problema. In javascript '1' e 1 saranno entrambi uguali se i dati di ritorno sono 1 o '1'. Non stiamo confrontando con l'uguaglianza di tipo - https://jsfiddle.net/yf6Lud24/ –

0

provare seguire i cambiamenti nel vostro metodo di Ajax ...

  1. metodo GET uso invece di POST
  2. .210
  3. alcuna necessità di utilizzare dataType: '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 !'); 
    } 
        }); 
    

riguarda prem

0

Nei commenti vedo thatyou hanno inviato risultato Ajax che è:

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

Il tuo problema è il confronto che è === "1" (ho visto quel tipo di confronto in questione quando sono protagonista ted scrivendo questa risposta) e hai 1 come numero non "1" come stringa, === significa tipo confronto, quindi in modo corretto dà false perché 1 è numbet e "1" è stringa. È possibile risolvere questo problema modificando condizione:

returndata[4]===1 

o senza controllo di tipo:

returndata[4]==1 

Questo è tutto.

Per comprendere meglio questa risposta ho preparato alcuni esempi.

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');

Problemi correlati