Javascript只在首次刷新后才能运行?

时间:2014-11-26 07:06:15

标签: javascript jquery mobile refresh

为什么以下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>

3 个答案:

答案 0 :(得分:0)

我认为这是Ajax的一个问题(我不知道php,但我在我的asp.net mvc应用程序中有类似的东西)。我使用jquery和“on”方法解决了这个问题。 请查看此Jquery api ON

答案 1 :(得分:0)

修改 找到this。这可能适用于所有拥有javascript页面的人。问题是jquery需要在javascript周围的div标签<div data-role="page">中有一个属性。看看我在编辑中发布的链接。

答案 2 :(得分:0)

尝试将您的功能置于&#34; settimeout#34; javascript函数...并提供100ms的超时