2014-11-26 3 views
0

Любые идеи, почему функция javascript ниже работает только после обновления страницы один раз? Я попытался положить функцию в нижней части страницы, но она по-прежнему не работает. Я чувствую, что это связано с порядком выполнения кода, но я не могу определить, где именно. Javascript работает только после первого обновления?

function incrementIssue(id) { 
     var row = "#row" + id; 
     if (window.XMLHttpRequest) { 
     // code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
     } else { // code for IE6, IE5 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     xmlhttp.onreadystatechange=function() { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) { 
      document.getElementById("issue"+id+"Upvote").innerHTML=xmlhttp.responseText; 
      //$(row.toString()).find('.ui-icon').removeClass('ui-icon-custom').addClass('ui-icon-arrow-d'); 

     } 
     } 
     xmlhttp.open("GET","incrementIssue.php?q="+id,true); 
     xmlhttp.send(); 
    } 

    </script> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <link rel="stylesheet" href="docs/themes/blue/jquery.mobile-1.2.0.css"> 
    <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script> 
    <script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script> 

    </head> 
    <body> 

    <div data-role="page" id="pageone"> 
     <div data-role="header"> 
     <h1>Pithy</h1> 
     <div data-role="navbar"> 
      <ul> 
      <li><a href="index.php">Home</a></li> 
      <li><a href="issues.php">View Issues</a></li> 
      <li><a href="add.php">Add Issue</a></li> 
      </ul> 
     </div> 
     </div> 

     <div data-role="main" class="ui-content"> 
     <ul data-role="listview" data-inset="true" data-split-theme="c" >  

    <?php 

    mysql_connect($hostname, $username, $password) OR DIE ("Unable to 
    connect to database! Please try again later."); 
    mysql_select_db($dbname); 

    //Fetching from your database table. 
    $query = "SELECT * FROM $usertable"; 
    $result = mysql_query($query); 

    if ($result) { 
     while($row = mysql_fetch_array($result)) { 
      $issue = $row["issueName"]; 
      $upvotes = $row["upvotes"]; 
      $id = $row["issueID"]; 
      echo "<li data-icon=\"arrow-u\" id=\"row".$id . "\"> <a data-transition=\"pop\" href=\"point.php?id=". intval($id). "\">".$issue ."</a><a href=\"javascript:incrementIssue(".$id.");\"></a> <span id=\"issue".$id."Upvote\" class=\"ui-li-count\">" .$upvotes."</span></li>"; 

     } 
    } 

    ?> 
     </ul> 

     </div> 

     <div data-role="footer"> 
     <h6>See what's important.</h6> 
     </div> 
    </div> 

    </body> 
    </html> 
+0

Вы хотите сказать, что независимо от того, какой бы связать вас нажмите из результирующего набора, то 'incrementIssue()' функция делает не выполняется иначе, чем один раз? – ArinCool

ответ

0

Я думаю, что это проблема с Ajax (я не знаю PHP, но я что-то подобное в моем приложении ASP.NET MVC). Я разрешаю эту проблему, используя метод jquery и «on». Пожалуйста, посмотрите на это Jquery api ON

0

EDIT: Найдено this. Это, вероятно, будет работать со всеми теми, у кого есть страница с javascript. Проблема заключается в том, что jquery должен иметь атрибут в теге div <div data-role="page">, окружающем javascript. Посмотрите ссылку, которую я опубликовал в редакции.

+0

проблема в том, что я не хочу, чтобы функция запускалась при загрузке. Это функция ajax, поэтому я хочу, чтобы она была запущена, когда кто-то нажимает кнопку –

+0

. Посмотрите на эту [ссылку] (http://stackoverflow.com/questions/25337374/javascript-does-not-run-on- first-load-if-i-include-the-jquery-mobile-1-4-3-min-j) – brannmar

+0

СПАСИБО БРАНМАР! –

0

Попробуйте поставить Funtion под «SetTimeout» JavaScript функции ... и предоставить тайм-аут, как 100мс

Смежные вопросы