2009-06-25 6 views
0

私は警告したいJavaScript関数コードを持っています。xmlからjavascriptの警告値を読み取る

function msg(x,y) 
{ 
tempstr = x.value 
if(tempstr.length>y) 
{ 
    alert(c_AcknowledgementText); 
    x.value = tempstr.substring(0,y); 
    } 
} 

は今、私はフォーマット以下でXMLを持っている:

<?xml version="1.0" encoding="utf-8" ?> 
<root> 
    <key name="c_ContactUsHeading">Contact Us</key> 
    <key name="c_AcknowledgementText">Comments can not be more than 250 characters.</key> 
</root> 

上記の警告に示されたメッセージは、XMLのキー名「c_AcknowledgementText」上から読み取ることができるように私はJavaScriptコードをしたいです。

私の問題は明らかです。

答えて

1

基本的に、あなたは、XMLHttpRequestのを使用したいです。あなたがtempstrなどで何をしようとしているのかはわかりません。

function msg(x,y) 
{ 
    tempstr = x.value; 
    if(tempstr.length>y) 
    { 
     var req = new XMLHttpRequest(); 
     req.open('GET', '/file.xml', true); 
     req.onreadystatechange = function (aEvt) { 
      if (req.readyState == 4) { 
       if(req.status == 200) 
       { 
        var keys = req.responseXML.getElementsByTagName("key"); 
        for(var i = 0; i < keys.length; i++) 
        { 
         var key = keys[i]; 
         if(key.getAttribute("name") == "c_AcknowledgementText") 
         { 
          alert(key.textContent); 
          break; 
         } 
        } 
       } 
       else 
        alert("Error loading page\n"); 

        } 
     }; 
     req.send(null); 
     x.value = tempstr.substring(0,y); 
    } 
} 
+0

Matthewに感謝します。しかし、私のコードがif(req.readyState == 4)の中に入っていないことをお勧めしますか?それはJQueryを使って行うことができますか? –

+0

はい、JQueryを使用できます。しかし、まず何が起こっているのか把握したいかもしれません。何かエラーがありますか?パスが正しいことを確認しましたか? –

0

c_AcknowledgementTextのXMLファイルを解析する必要があります(JavaScriptまたはサーバーサイド言語を使用し、ページが読み込まれるとJavaScriptに格納する必要があります)。

+0

ありがとうございました。javascriptを使用してコードを作成できますか? –

1

最初のステップでは、XMLドキュメントへのDOM参照を取得します。これを行う方法の1つはAjaxです。この場合、サーバーはContent-Type:text/xmlヘッダーで応答する必要があります。

$.ajax({ 
    type: "GET", 
    url: "/path/to/my.xml", 
    dataType: "xml", 
    success: function(doc){ 
    var keys = doc.getElementsByTagName('key'); 
    if (keys.length > 0) { 
     for (var i=0; i<keys.length; i++) { 
     if (keys[i].getAttribute('name') == 'c_AcknowledgementText') { 
      alert(keys[i].innerHTML); 
     } 
     } 
    } 
    } 
}); 

あなたはいくつかの追加のエラー処理が必要な場合があります、など

+0

このプロパティはresponseXMLです。 –

+0

修正済み - ありがとうございます。 – steamer25

+0

これはjqueryを使って行うことができますか?はいの場合は、私にコード –

関連する問題