3

私は次のコードを持っています:

xmlDoc=loadXMLDoc("dbbackup.xml");
x=xmlDoc.getElementsByTagName("record");
alert(x);
for (i=0;i<3;i++) {
  newel=xmlDoc.createElement("edition");
  newtext=xmlDoc.createTextNode("first");
  alert("x  : "+x[i]);
  alert("newtext :"+newtext.nodevalue);
  x[i].appendChild(newel);
  alert("sd");
}
function loadXMLDoc(dname) {
  if (window.XMLHttpRequest) {
    xhttp=new XMLHttpRequest();
  } else {
    xhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xhttp.open("GET",dname,false);
  xhttp.send();
  return xhttp.responseXML;
}

同じ場所に作成dbbackup.xmlしましたが、XMLファイルは次のようになります。

<sticky>
  <record></record>
</sticky>

しかし、スクリプトを実行した後、xmlファイルが更新されていません。

4

4 に答える 4

1

クライアント側で Web ページからデータを収集し、それらをサーバー (ajax) に送信できます。サーバーは、xml ファイルを生成し、ファイル (ajax) へのリンクを送り返します。JavaScript を使用して、サーバーから返されたリンクを使用してダウンロード リンクを生成します。

これは、私のプロジェクトの問題を解決するために私が行う方法です。

于 2013-07-12T13:28:17.510 に答える
1

Javascript はディスク上のファイルを変更できません。クライアントの Web ブラウザーでクライアントに対してのみ実行されます。

サーバー上のファイルとの間で実際に書き込みを行うには、PHP や ASP などのサーバー側の言語とテクノロジを使用する必要があります。

于 2012-08-14T06:01:37.903 に答える
1

SomeKidWithHTML は正しいです。

JavaScript は、ブラウザー フレームワーク内に読み込まれたメモリ内のファイルのみを変更するように設計されています。

ブラウザーは、子供 (html、xml など) が遊ぶことができるサンドボックスと考えてください。ジョニー (xml) がサンドボックスで遊んでいる限り、すべてがうまくいきます。しかし、Johnny がそのサンドボックスの外でプレイすることを許可された場合、Web サイトによってあなたのマシンで行われる可能性のある大混乱を考えてみてください。

JavaScript がそれ自体で、ローカル マシン上のファイルに永続的に影響を与えることは絶対にありません。サンドボックス内でのみ再生できます (ローカルでは、変更に影響を与えるために Java または他の API を呼び出すことができますが、それはまったく別の取引です)。

JavaScript はクライアント側のみです。サーバーに影響を与えると予想される場合は、サーバーへのコールバックを介してのみ実行できます。サーバーでは、その呼び出しを受信して​​応答し、何かを行うために、ある種のプログラミング (asp.net、java、php、html など) が必要になります。

JavaScript 自体は非常に強力ですが、サンドボックス (ブラウザー) 内にのみ存在します。そのブラウザ以外の何かに影響を与えるには、すでに配置されていて、それらのリクエストを受け取る準備ができている他のプログラムに依存する必要があります。

そして、これはすべてセキュリティの名の下に行われています。

于 2012-08-14T06:36:34.680 に答える
1

私はこれを作りました-クライアント側でXMLを作成し、日常のプラクシスマイクを使用します

関数 makeSlot() {

  var xmlhttp = new XMLHttpRequest();    
  xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) showBon(); } 
  xmlhttp.open("POST","crMakeSlot.php",true);  
  xmlhttp.send(wrapUp());  
}

/***
* make the final transaction - using XML
*/
function wrapUp () {   

  var transaction = document.implementation.createDocument("","", null);           

  var operator = document.createElement("operator");
  var textblok1 = document.createTextNode(document.getElementById("rText").value);
      operator.appendChild(textblok1);         

  var root = document.createElement("transaction"); 
      root.setAttribute("tstamp",  now);
      root.setAttribute("sequenceno", zSequenceNo.textContent);
      if (parseInt(document.getElementById("zDankort").value) > 0) root.setAttribute("dankort", document.getElementById("zDankort").value);        
      if (parseInt(document.getElementById("zCash").value) > 0) root.setAttribute("cash", document.getElementById("zCash").value);              
      if (parseInt(document.getElementById("zCredit").value) > 0) root.setAttribute("credit", document.getElementById("zCredit").value);              
      if (parseInt(document.getElementById("zCheck").value) > 0) root.setAttribute("check", document.getElementById("zCheck").value);              
      if (parseInt(document.getElementById("zGiftcard").value) > 0) root.setAttribute("giftcard", document.getElementById("zGiftcard").value);              
      if (parseInt(document.getElementById("zVoucher").value) > 0) root.setAttribute("voucher", document.getElementById("zVoucher").value);              

      root.appendChild(operator);

  var divObj = document.getElementsByTagName("div");   

/***
*  when column value is 4, then we have our data complete - next cycle 
*/
  for (ix = 0; ix < divObj.length; ix++) {     
    switch (divObj[ix].getAttribute("column")) {
     case "1": var row = document.createElement("row"); row.setAttribute("item",divObj[ix].textContent);
     case "2": row.setAttribute("price",divObj[ix].textContent);        
     case "3": row.setAttribute("quantum",divObj[ix].textContent);        
     case "4": root.appendChild(row); 
     default: break;                 
    }
  }        
  transaction.appendChild(root);
  return(transaction);
}
于 2012-08-14T06:11:20.137 に答える