2013-04-15 44 views
-3

如何將x參數傳遞給函數startTable? 我想篩選由作者結果,並一直停留在這幾天...將參數傳遞給函數(ajax,javascript,jquery)

$(document).ready(function() { 
    var result; 
    alert('ajax works'); 
    $.ajax({ 
     type: "GET", 
     url: "xml.php", 
     cache: true, 
     dataType: "xml", 
     success: function (xml) { 

      function startTable(x) { 
       $(xml).find("item").each(function (index) { 
        var author = $(this).find('author').text(); 
        var title = $(this).find('title').text(); 
        var rating = $(this).find('rating').text(); 
        var review = $(this).find('review').text(); 
        // Checks the condition 
        if (author == x) { 
         $('#input1').append('<tr><td>Title: <b>' + title + '</b></td><td>Rating: <b>' + rating + '</b></td></tr><tr><td colspan="2">' + review + '</td></tr>'); 
        } 
       }); 
      }; 

     } 
    }); 
}); 

function startFilter() { 
    var x = document.getElementById('inputFilter').value; 
    // Passing parameter 
    startTable(x); 
}; 

什麼想法? 預先感謝您。

+0

'startTable ''範圍是成功的功能,但你從那個範圍以外調用它,它不存在。 – user2264587

回答

0

我返工你的代碼中調用了ajax內響應數據,然後用它 - 都是由執行開始。這有點笨重,但你可以繼續工作。

function startTable(x, xml) { 
    $(xml).find("item").each(function (index) { 
     var xmlItem = $(this); 
     if (xmlItem.find('author').text() == x) { 
      var thisItem = { 
       title: xmlItem.find('title').text(), 
       rating: xmlItem.find('rating').text(), 
       review: xmlItem.find('review').text() 
      }; 
      $('#input1').append('<tr><td>Title: <b>' + thisItem.title + '</b></td><td>Rating: <b>' + thisItem.rating + '</b></td></tr><tr><td colspan="2">' + thisItem.review + '</td></tr>'); 
     } 
    }); 
} 

function getData(x) { 
    var result; 
    alert('ajax works'); 
    $.ajax({ 
     type: "GET", 
     url: "xml.php", 
     cache: true, 
     dataType: "xml", 
     success: function (xml) { 
      startTable(x, xml); 
     } 
    }); 
} 

function startFilter() { 
    var x = document.getElementById('inputFilter').value; 
    // Passing parameter 
    getData(x); 
} 

//get started 
startFilter(); 

現在,它可能只是我,但你可能會在服務器上過濾結果(合格的「X」的值,只有發回你所需要的,但是這是你的。

+0

謝謝你man !!!!幫助太多了! –

+0

還有一個問題... function .append add東西到div,什麼函數重寫div? –

+0

'.html(newcontent)' - 但這不是輸入標記,只適用於div,span等。 –

0

你不能從外面調用本地函數。你應該做的是過濾成功回調函數

$.ajax({ 
    type: "GET", 
    url: "xml.php", 
    success: function (response) { 
     render_and_filter(response); 
    } 
}); 

function render_and_filter(data){ 
// ... append or update your data to document here ... 
}