Опция выбора не работает - PullRequest
       0

Опция выбора не работает

0 голосов
/ 09 августа 2011

Я действительно новичок в jquery, и я не "паутина") -;пожалуйста, имейте это в виду.

У меня есть мобильное приложение jquery, которое в настоящее время публикует данные в API.

У меня есть три XML-документа, основанные на ежедневных, еженедельных и ежемесячных действиях, генерируемых API-интерфейсом.Мне нужно принять значение, выбранное пользователем из трех вариантов («Сводка за предыдущий день», «Сводка за предыдущую неделю» и «Сводка за предыдущий месяц»), чтобы вызвать правильный документ XML, уже предоставленный за этот период времени, проанализировать документ XML, чтобы найти три узла, а затемзаписать текст из этих узлов в div для другой страницы мобильного приложения jquery.

В данный момент приложение не вызывает функцию выбора изменения.Буду признателен за понимание того, что я делаю неправильно в этом вопросе, а также за любые другие предложения по улучшению моей общей работы здесь.

Структура документа XML следующая:

<StatusModel>

<Uid>
 xxxxxxx
 </Uid>

<Created>
2011-08-02T08:57:39.377
</Created>

<User>
xxxxxx
</User>

<Level>
x
</Level>

<Doing>
xxxxx
</Doing>

<Thinking>
xxxxx
</Thinking>

</StatusModel> 

HTML для выбора выглядит следующим образом:

 <div data-role="fieldcontain">
 <label for="summaries" class="select">Review a summary of your scores and notes:</label>
   <select name="summaries" id="summaries" data-native-menu="false">
      <option value="time_period" selected>Choose a time period</option>
      <option value="Previous_Day_Summary">Previous Day Summary</option>
      <option value="Last_Week_Summary">Last Week Summary</option>
      <option value="Last_Month_Summary">Last Month Summary</option>
     </select>  
 </div>

Сценарий выглядит следующим образом:

$(function() {

$('[name = "summaries"]').change(function() {

alert("selection called");

$(this).children(":selected").text();

//getting the text from the summaryreviews form selection

var newVal = $("#summaries").val();

//newurl builds the url based on the timeframe chosen in the summaryreviews select box

var newurl = $("http://somedomainname/api/list" + "newVal");


$.ajax( {
type: "GET",
url: (newurl),
cache: false,
dataType: "xml",
success: summaryxml

});

function summaryxml(xml) {

    //parse the xml document including children using the *;

$(xml).find(*).each(function() {

    var level = $(this).find("level").text();
    var doing = $(this).find("doing").text();
    var thinking = $(this).find("thinking").text();


$('<li>' + 'level' + '<br />' + 'doing' + '<br />' + 'thinking' +  '</p></li>').appendTo("#summarylist");

//refresh the summarylist

$("#summarylist").listview('refresh');

    });
}

});

 });

Элемент div, который я хочу заполнить, находится на другой мобильной странице jquery

<div data-role="page" id="summarynotes" data-theme="d" data-position="fixed" data-transition="slide">
<div data-role="header">

</div>


<div data-role="content" id="summarize" data-theme="d">


<ul id="summarylist" data-role="listview">

// Display Day, Week, or Month summary notes here


</ul>

<div data-role="footer" data-position="fixed">

</div>
</div>

Ответы [ 2 ]

1 голос
/ 09 августа 2011

Несколько мыслей, которые, надеюсь, помогут:

  • Вы хотели позвонить в document.ready на первой линии вашего JS?т.е. $(function() {
  • Строка 3 - почему бы просто не использовать адрес вашего select по его идентификатору?$('#summaries').change()
  • var newurl = $("http://somedomainname/api/list" + "newVal"); - это оценивается как http://somedomainname/api/listnewVal.Это то, что вы хотели?
1 голос
/ 09 августа 2011

Для начала изменение

$(xml).find(*).each(function() { 

в

$(xml).find('*').each(function() {

Если вы используете хорошую интегрированную среду разработки с подсветкой синтаксиса, вам будет легче найти ошибки такого рода.

Удачи.

@ Комментарий Spycho: он работает в Firefox, но не в IE / Opera ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...