0

私はオンライン計算機を構築しており、AJAX を介して値を送信して、php スクリプトで処理しようとしました。サーバーからの応答は div に設定されますが、その div は表示後すぐに消えます。私のajaxコードは次のとおりです。

function get_XmlHttp() {
  // create the variable that will contain the instance of the XMLHttpRequest object         (initially with null value)
  var xmlHttp = null;

  if(window.XMLHttpRequest) {       // for Forefox, IE7+, Opera, Safari, ...
    xmlHttp = new XMLHttpRequest();
  }
  else if(window.ActiveXObject) {   // for Internet Explorer 5 or 6
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  }

  return xmlHttp;
}
function ajaxrequest(php_file, tagID) {
  var request =  get_XmlHttp();     // calls the function for the XMLHttpRequest instance

  // gets data from form fields, using their ID
  var c1 = document.getElementById('c1').value;
  var c2 = document.getElementById('c2').value;
  var c3 = document.getElementById('c3').value;
  var c4 = document.getElementById('c4').value;
  var c5 = document.getElementById('c5').value;
  var c6 = document.getElementById('c6').value;


  // create pairs index=value with data that must be sent to server
  var  the_data = 'c1='+c1+'&c2='+c2+'&c3='+c3+'&c4='+c4+'&c5='+c5+'&c6='+c6;

  request.open("POST", php_file, true);         // sets the request

  // adds a header to tell the PHP script to recognize the data as is sent via POST
  request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  request.send(the_data);       // sends the request

  // Check request status
  // If the response is received completely, will be transferred to the HTML tag with tagID
  request.onreadystatechange = function() {
    if (request.readyState == 4) {
      document.getElementById("ajaxform").submit();
      document.getElementById(tagID).innerHTML = request.responseText;


    }
  }
}

実際のサイトにはブートストラップ CSS フレームワークを使用しており、応答 div にはクラスを適用していないことに注意してください。

ありがとう

4

1 に答える 1

2

ハンドラーでは、フォームを送信していますonreadystatechange。これにより、ページが送信されます (したがって、ページが変更されます)。

request.onreadystatechange = function () {
    if (request.readyState == 4) {
        document.getElementById("ajaxform").submit(); // <-- ?
        document.getElementById(tagID).innerHTML = request.responseText;
    }
}

同じページが再び表示されるということは、フォームにセットajaxformがないことを意味します。action

于 2013-04-30T20:32:09.933 に答える