2013-08-19 293 views
2

我試圖在jQuery ajax方法中編寫一些if/else條件。我不太瞭解jQuery,所以我可能只是犯了一個愚蠢的小的語法錯誤。但這裏是:jQuery if/else語句

function swapContent(count,product) 
     { 
      $.ajax(
      { 
       type: "POST", 
       dataType: 'json', 
       url: "includes/price-update.php", 
       data: {countVar: count, ProductID: product}, 
       success: function(data) 
       { 
        console.log(data); 
        $('.cleardata').remove(); 

        $.each(data, function() 
        { 

         $(".price-data").append(
         $("<tr class='cleardata'/>") 

         if (data.InStock == "In Stock") { 
         $('.in-stock-row').text ('Yes'); 
         } 
         else if (data.InStock == "Unavaiable"){ 
          $('.in-stock-row').text ('No'); 
         } 
         else{ 
          $('.in-stock-row').text ('-'); 
         } 
         .append("<td class='store-row'><h5 property='seller'>" + this.MerchantName + "</h5></td>") 
         .append("<td class='price-row'><h5 property='price'>$" + this.Price + "</h5></td>") 
         .append("<td class='in-stock-row'><h5>" + this.InStock + "</h5></td>") 
         .append("<td class='merch-row'><a property='url' target='_blank' href='" + this.PageURL + "' class='merch-but'>GET IT</a></td>") 
         ); 
        }) 
       } 
      }); 
     } 
    </script> 

除了if/else語句之外,一切都很好用。我不確定return是否是回顯數據的正確方法。我是一個PHP人,所以jQuery仍然是全新的。謝謝你的幫助。

編輯:我只是根據一些建議改變了代碼,這就是我所擁有的,現在我的表中沒有任何東西顯示出來。

第二次編輯:附加JSON數據的圖像進行調試。 JSON Data from ajax post method. Not sure why there is a 3 and InStock with the same properties.

第三編輯:發佈PHP數據

<?php 
$countVar = $_POST['countVar']; 
$ProductID = $_POST['ProductID']; 
$data = PriceCompare($countVar, $ProductID); 
echo json_encode($data); 

function PriceCompare($countVar, $ProductID){ 
$DBH = new PDO('mysql:host=localhost;dbname=---','---','---'); 
$STH = $DBH->query('SELECT MerchantName, Price, PageURL, InStock 
        FROM merchants 
        WHERE ProductID=' . $ProductID .' AND Count=' . $countVar . ' 
        ORDER BY Price'); 

$result = $STH->fetchAll(); 

return $result; 
} 
?> 

EDIT四:從通過改變PHP下面固定JSON數據的fetchall方法fetchall(PDO::FETCH_ASSOC)結果得到兩套數據的固定JSON數據。儘管如此,仍然沒有在庫存表字段中獲得正確的結果。 Fixed JSON Data

+1

你是不是指'else if'代替你的第二個'if'? – brbcoding

+0

你的錯誤是什麼,沒有返回?我不認爲你在回報聲明中需要括號。嘗試先取出這些。 – user1477388

+1

你會想要指定你想要回顯的地方,例如 '

'將會是HTML頁面的某個地方的容器,然後你可以這樣做而不是'return(「是」);'你會這樣做' $('。response')。text('Yes');' –

回答

2

我增加了一些模擬JSON,有在Unavailable中的第一個拼音一個錯字。這只是AJAX成功功能的each部分是正確的。你可以看到這個工作http://jsfiddle.net/mhWdP/

希望有幫助。 R.

JsonData = [{ 
    "InStock": "In Stock", 
     "MerchantName": "Coffee for Less", 
     "PageURL": "http://www.google.com", 
     "Price": "14.99" 
}, { 
    "InStock": "Unavailable", 
     "MerchantName": "Drugstore", 
     "PageURL": "http://www.google.com", 
     "Price": "15.99" 
}, { 
    "InStock": "No", 
     "MerchantName": "Drugstore2", 
     "PageURL": "http://www.google.com", 
     "Price": "29.99" 
}]; 


$.each(JsonData, function (index, dataItem) { 
    stockStatus = ''; 
    if (dataItem.InStock == "In Stock") { 
     stockStatus = "Yes"; 
    } else if (dataItem.InStock == "Unavailable") { 
     stockStatus = "No"; 
    } else { 
     stockStatus = "-"; 
    } 

    tempRow = document.createElement('tr'); 

    $(tempRow).append("<td class='store-row'><h5 property='seller'>" + dataItem.MerchantName + "</h5></td>") 
     .append("<td class='price-row'><h5 property='price'>$" + dataItem.Price + "</h5></td>") 
     .append("<td class='in-stock-row'><h5>" + stockStatus + "</h5></td>") 
     .append("<td class='merch-row'><a property='url' target='_blank' href='" + dataItem.PageURL + "' class='merch-but'>GET IT</a></td>") 
     .append("</tr>"); 

    $(".price-data").append(tempRow); 
}); 
0

至少存在兩個問題:

  1. 你是你之前返回做$(".price-data").append部分
  2. 你是作用於data(列表),而不是列表的任何特定元素。

應該是這樣的:

   $.each(data, function(i, element) 
       { 
        if (element.InStock == "In Stock") {