2013-04-15 3 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 '' s scope - это функция succes, но вы вызываете ее из-за пределов этой области. Она не существует там. – 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(); 

Теперь это может быть просто меня, но вы можете фильтровать результаты поиска на сервере (прохождение «х» значение и только отправить обратно то, что вам нужно, но это до вас.

+0

Спасибо вам, мужчина !!!! Помогли так много! –

+0

еще один вопрос ... функция .append добавляет материал для 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 ... 
} 
Смежные вопросы