2015-08-14 15 views
9

Nút bấm có tác vụ nhất định được thực hiện qua ajax. thông qua ajax tôi nhận được một kết quả ở định dạng json trông như thế này trong giao diện điều khiểnnút ẩn khi trả về giá trị ajax

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

Bây giờ tôi muốn điều đó bất cứ khi nào có 1 ở vị trí thứ 4 tôi muốn ẩn vài nút. mã mà tôi đã viết là

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

    }); 

nếu điều kiện có vẻ hoạt động vì tôi đã cố gắng đặt hộp cảnh báo trong điều kiện if và nó hoạt động, tuy nhiên các nút vẫn được hiển thị.

mã tôi đã cố gắng để thử nghiệm với hộp cảnh báo là

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

bất cứ ai có thể vui lòng nói lý do tại sao lại xảy ra

+0

'nếu (returndata [4] === 1)' – JohnnyAW

+0

Hãy thử loại bỏ các dấu ngoặc kép từ khắp nơi trên '1', vì nó trông giống như nó đang được trả về là một số nguyên, không một chuỗi: 'returndata [4] === 1' (cũng vậy, sử dụng dấu ba bằng) –

+0

Có lẽ bạn cần phải làm' returnData.data [4] === 1'? – aup

Trả lời

1

này Tôi biết điều này là những gì bạn đã làm. Tôi đang gặp thách thức để giải quyết vấn đề của bạn. Hãy làm từng cái một. Lần đầu tiên, hãy thử thay vì mã này:

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

Hãy cho tôi biết kết quả của bạn trong phần nhận xét. Chúc mừng.

0

Bạn đã đối sánh một '1' làm string trong phần ẩn của mình, nhưng trong phần cảnh báo khớp với một số 1 là number. Đây có thể là vấn đề.

Tránh này

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

Sử dụng này

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

Hãy xem qua các chú thích. –

+0

@prem. Đây không phải là vấn đề. Trong javascript '1' & 1 cả hai đều sẽ đúng nếu dữ liệu trả về là 1 hoặc '1'. Chúng tôi không so sánh với loại bình đẳng - https://jsfiddle.net/yf6Lud24/ –

0

thử làm theo những thay đổi trong phương pháp ajax của bạn ...

  1. sử dụng phương thức GET thay vì POST
  2. .210
  3. không cần phải sử dụng 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 !'); 
    } 
        }); 
    

liên quan Prem

0

Trong ý kiến ​​tôi thấy thatyou đã đăng tải kết quả ajax đó là:

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

Vấn đề của bạn là sự so sánh là === "1" (tôi thấy loại so sánh được đề cập khi tôi gắn dấu sao ted viết câu trả lời này) và bạn có 1 là số không "1" là chuỗi, === có nghĩa là so sánh kiểu, do đó, theo cách chính xác nó cho sai vì 1 là numbet và "1" là chuỗi. Bạn có thể khắc phục điều này bằng cách thay đổi điều kiện:

returndata[4]===1 

hoặc không có loại kiểm tra:

returndata[4]==1 

Vậy là xong.

Để hiểu thêm về câu trả lời này, tôi đã chuẩn bị một vài ví dụ.

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

Các vấn đề liên quan