1

私は次のhtmlを持っています:

<body onload="showcontent()"> <!-- onload optional -->
        <div id="content"><img src="loading.gif"></div> <!-- leave img out if not onload -->
    </body>

次のスクリプトもあります。

関数 showcontent(){

  if(window.XMLHttpRequest) {
    xmlhttp = new XMLHttpRequest();
  } else {
    xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
  }

  xmlhttp.onreadystatechange = function() {
    if(xmlhttp.readyState == 1) {
        document.getElementById('content').innerHTML = "<img src='loading.gif' />";
    }
    if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
      document.getElementById('content').innerHTML = xmlhttp.responseText;
    } 
  }

  xmlhttp.open('GET', 'elsevier.php', true);
  xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');
  xmlhttp.send(null);

}

elsevier.php では、テーブルの行数が 500 を超えたときに、続行するかキャンセルするかを示す 2 つのボタンを表示したいと考えています。このコードを .php ファイルに入れた場合、何も起こりません..... (2 つのボタンが表示されることを除いて)。

if(mysqli_errno($con)==1062){
                    @$q55="SELECT COUNT(*) FROM testarticles";
                    $result55 = mysqli_query($con, $q55);
                    $row = $result55->fetch_row();
                    echo '#: ', $row[0].'<br>';

                    if($row[0]>=500&&$answer==false){
                        echo '<form action="" method="GET">';
                        echo "<label>Do you want to continue or cancel?</label>";
                        echo '<input type="button" id="but1" name="but1" value="Continue">';
                        echo '<input type="button" id="but2" name="but2" value="Cancel">';
                        echo '</form>';

                        //sleep(2);

                        if(isset($_GET["but1"])){
                           $answer=true;
                           break;
                         }
                         elseif(isset($_GET["but2"])){
                           @$q56="DELETE * FROM journal, volume, issue, articles, testarticles WHERE import_time=$unixtimestamp";
                           $result56 = mysqli_query($con, $q56);
                           exit;
                         }
                    }

このステップで、php スクリプトの実行を停止し、選択する 2 つのボタンを表示します。続行を押すと、停止した場所からスクリプトを実行します。

誰かアイデアはありますか?? 前もって感謝します!

4

2 に答える 2

0
session_start();

if(mysqli_errno($con)==1062){ 

                $where = isset($_SESSION['last_id']) ? " WHERE id > '" . $_SESSION['last_id'] . "'" : "";
                if(isset($_SESSION['last_id']))
                    unset($_SESSION['last_id']);

                @$q55="SELECT COUNT(*) FROM testarticles$where ORDER BY id"; 
                $result55 = mysqli_query($con, $q55); 
                $row = $result55->fetch_row(); 
                echo '#: ', $row[0].'<br>'; 

                if($row[0] >= 500 && $answer == false){

                    $_SESSION['last_id'] = $row['id'];

                    echo "<label>Do you want to continue or cancel?</label>"; 
                    echo '<input type="button" id="but1" name="but1" value="Continue" onclick="showcontent(true)" />'; 
                    echo '<input type="button" id="but2" name="but2" value="Cancel">'; 

                    //sleep(2); 

                    if(isset($_GET["but1"])){ 
                       $answer=true; 
                       break; 
                     } 
                     elseif(isset($_GET["but2"])){ 
                       @$q56="DELETE * FROM journal, volume, issue, articles, testarticles WHERE import_time=$unixtimestamp"; 
                       $result56 = mysqli_query($con, $q56); 
                       exit; 
                     } 
                } 

続行ボタンを押すと、取得されたコンテンツが追加され、置き換えられないため、showcontent 関数も変更する必要があります。

function showcontent(){
  if(window.XMLHttpRequest) {           
    xmlhttp = new XMLHttpRequest();           
  } else {           
    xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');           
  }           

  xmlhttp.onreadystatechange = function() {           
    if(xmlhttp.readyState == 1 && !update) {           
        document.getElementById('content').innerHTML = "<img src='loading.gif' />";           
    }           
    if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
      if(update)
        alert("this is an update and I should append data, not to replace the div content");
      else {       
        document.getElementById('content').innerHTML = xmlhttp.responseText;           
        //this is the first call of the function so the content of the div will be replaced
      }
    }            
  }           

  xmlhttp.open('GET', 'elsevier.php', true);           
  xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');           
  xmlhttp.send(null);           

}

HTML コード:

<body onload="showcontent(false)"> <!-- onload optional -->              
   <div id="content"><img src="loading.gif"></div> <!-- leave img out if not onload -->              
</body> 

これは検証済みのコードではないため、変更する必要があることに注意してください

于 2012-09-24T09:45:38.087 に答える