人に聞けない痔の悩み、これでスッキリ >>

既出でしたらすみません。
IEだとうまく動作するものが、FireFoxだと動作しません。
原因をご存知の方がいらっしゃいましたら、
ご教示願えますでしょうか。
参考書籍などをお伝えいただくだけでも構いません。

私はプログラミングの知識はありますが、
DOMについては初心者です。
よろしくお願いします。

----------HTML/JSソース

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Ajaxサンプル</title>
<script type="text/JavaScript" src="../lib/prototype.js"></script>
<script type="text/javascript">
<!--
function getFile(){
new Ajax.Request('test_xml03.xml',
{method: 'get',
onSuccess: getResponse,
onFailure: getError
});

function getResponse(req){
var varResult = req.responseXml.getElementsByTagName('result');
var varItem = varResult[0].getElementsByTagName('country');
$('result').innerHTML = varItem[0].firstChild.nodeValue;
}

function getError(req){
$('result').innerHTML = "ERROR";
}
}
//-->
</script>

</head>
<body>
<div>
<input type="button" value="データの読み込み" onClick="getFile()"/>
</div>
<div id="result" >ここにデータを読み込みます。</div>
</body>
</html>


----------XMLデータ(test_xml03.xml)

<?xml version="1.0" encoding="UTF-8" ?>
<result>
<country>アメリカ</country>
<kanji>米</kanji>
</result>

----------状況

「データの読み込み」ボタンをクリックすると、
IEでは"result"部分に 「アメリカ」と出ますが、
FireFoxだと何も起こりません。

----------環境

WindowsXP
IE6.0
FireFox2.0
prototype.jsを使用

----------補足

使用しているJavaScriptは、自分で調べた限りでは
IE/FF共に使用できるコードばかりのはずです。

いろいろと試してみましたが、わかりません。

どうかよろしくお願い申し上げます。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

> FireFoxだと何も起こりません。


getError関数が呼び出されているのかいないのか、
または何行目まで実行できているのか、
それを調べるのが先決では?

> function getResponse(req){
> var varResult = req.responseXml.getElementsByTagName('result');
> var varItem = varResult[0].getElementsByTagName('country');
> $('result').innerHTML = varItem[0].firstChild.nodeValue;
> }
responseXmlではなくresponseXML(XMLは大文字)ですが、、、
BBS投稿時の記述ミス?


MIME-Type(Content-Typeヘッダ)はどうなっていますか?
IEはMIME-Typeにかかわらず、拡張子が.xmlとなっていればresponseXMLにその内容を格納しますが、
それ以外のブラウザでは拡張子で判断せずに、MIME-Typeで判断するため、Content-Type: text/htmlなどが出力されている場合、responseTextにしか内容が入りません。
.cgiや.aspなど内容が変化しそうな拡張子の場合は、MIME-Typeを調べているようです。
(マイナーバージョンアップにより仕様が変わっているかも知れません)

firstChildが怪しいと言えば怪しいんですが、
それを説明すると長いので、、、
    • good
    • 0
この回答へのお礼

talooさん
ご丁寧なアドバイスをありがとうございます。

さっそく、試してみました。

>responseXmlではなくresponseXML(XMLは大文字)ですが、、、
>BBS投稿時の記述ミス?

確かに、間違えて記述していました・・
これを修正しました。

>firstChildが怪しいと言えば怪しいんですが、

$('result').innerHTML = varItem[0].firstChild.nodeValue;

$('result').innerHTML = varItem[0].childNodes[0].nodeValue;
と変更しました。

これで試してみたところ、FireFoxでも正常に表示されました。

本当に助かりました。
重ねて御礼申し上げます。
ありがとうございました。

お礼日時:2007/08/14 09:47

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QJavaScriptde途中で、「exit」するには?

function kensaku(){
s_data = document.kaiin_form.input_name.value;

if(!s_data){ alert("キーワードを入れて下さい!"); }

if(s_data != dumy){ ...... }
for(i=st_no;i<=n;i++){
......省略.................;
.......省略................}
}

----------------------------------
3行目で表示されたアラートをOKで閉じても、4行目以下が実行されてしまいます。
3行目でexitするにはどうすれば良いでしょうか?

Aベストアンサー

>関数(kensaku())からは抜けられませんでした。
そうですね、勘違いしていました、f(^^;
すみません。
if(!s_data){
alert("キーワードを入れて下さい!");
return;
}
ですね。

QAjaxが動きません~『status=0』?

Ajaxを使うため、
web上のサンプルをとってきて実行してみたところ、動きません。

いろいろ調べてみたところ、
通常
 if(httpObj.status == 200)
などで使われるstatusが0になっていることが分かりました。

どこかで
 『ローカル上ではstatusは0になる』
という記述を見たのですが、Apache2.0.59が入っています。

Apacheが入っていてもstatusは0になるのでしょうか?

今回使用したサンプルは以下のサイトをのモノを貼り付けました。
http://www.openspc2.org/JavaScript/Ajax/Ajax_study/chapter02/004/index.html
その上で、
  if ((httpObj.readyState == 4) && (httpObj.status == 200))
  {
    displayData();
  } else {
    document.ajaxForm.result.value = httpObj.status;
  }
としました。


これで2日悩んでいるので、解決したいのです。
よろしくお願いいたします。

Ajaxを使うため、
web上のサンプルをとってきて実行してみたところ、動きません。

いろいろ調べてみたところ、
通常
 if(httpObj.status == 200)
などで使われるstatusが0になっていることが分かりました。

どこかで
 『ローカル上ではstatusは0になる』
という記述を見たのですが、Apache2.0.59が入っています。

Apacheが入っていてもstatusは0になるのでしょうか?

今回使用したサンプルは以下のサイトをのモノを貼り付けました。
http://www.openspc2.org/JavaScript/Ajax/Ajax_study/c...続きを読む

Aベストアンサー

> error.logにしか書き込みがないという時点で失敗なのがよく分かりました。
Apacheの起動に失敗してるのでは?

まさかとは思いますが、Apacheをインストールしただけで動いてないとか、使ってないとか、
そういうことはないですよね?
アクセスするアドレスってどうなってます?
ちゃんとhttp://localhost/~ または http://127.0.0.1/~としてますか?

> 『ローカル上ではstatusは0になる』
語弊のある書き方ですが、ウェブサーバーを使わずにファイルを読み込んだ場合、
つまり、file:///~のようなアドレスになる場合にstatusを受け取れません。
ローカルでもウェブサーバーを使っていればstatusコードを受け取れます。

蛇足になりますが
statusを見るだけだったらContent-typeは関係ないですよ。
ファイルが有れば200、エラーならそのエラーコードが入ります。
404 FileNotFoundとかのHTTP Status codeと同じですので。

>   if ((httpObj.readyState == 4) && (httpObj.status == 200))
>   {
>     displayData();
>   } else {
>     document.ajaxForm.result.value = httpObj.status;
>   }
この書き方では、else文はたぶん意味はないと思います。

readyStateの変遷を見るためなら

document.ajaxForm.result.value += httpObj.readyState + ', '+ httpObj.status + '\n';

、、、を、if文の前に書いた方がいいと思います。(たぶん動くと思うので)

> error.logにしか書き込みがないという時点で失敗なのがよく分かりました。
Apacheの起動に失敗してるのでは?

まさかとは思いますが、Apacheをインストールしただけで動いてないとか、使ってないとか、
そういうことはないですよね?
アクセスするアドレスってどうなってます?
ちゃんとhttp://localhost/~ または http://127.0.0.1/~としてますか?

> 『ローカル上ではstatusは0になる』
語弊のある書き方ですが、ウェブサーバーを使わずにファイルを読み込んだ場合、
つまり、file:///~のよ...続きを読む

QHTMLフォームのSELECTの幅を一定にするためには?

HTMLフォームのSELECTの幅を一定にするためにはどのようにすれば
いいのでしょうか?

CSS等で設定できるとありがたいのですが、やり方がわかりません。

Aベストアンサー

<select style="width: 200px">

Q外部ファイルにしたら文字化けしてしまいました

FC2ブログで下記【1】を

<script type="text/javascript">
<!--
【1】
// -->
</script>

で囲んで直接プラグインに書き込んだら
文字化けせずに表示されたのですが、

外部ファイルにして

<script type="text/javascript" src="【1】のJSファイルのパス"></script>

をプラグインに書き込んだら、
画像リンクはうまく表示されたのですが、
文字化けしてしまいました。

文字化けしない方法はないでしょうか?


【1】
// ランダムに画像を表示する
jmp = new Array();
img = new Array();
// ジャンプ先のアドレス(数字は画像と対応)
jmp[0] = "http://~";
jmp[1] = "http://~";
jmp[2] = "http://~";
jmp[3] = "http://~";
jmp[4] = "http://~";
// 画像のアドレス(数字はジャンプ先のアドレスと対応)
img[0] = "img/img1.jpg";
img[1] = "img/img2.jpg";
img[2] = "img/img3.jpg";
img[3] = "img/img4.jpg";
img[4] = "img/img5.jpg";
n = Math.floor(Math.random()*jmp.length);
document.write("<a href='"+jmp[n]+"' target='_blank'>");
document.write("<img src='"+img[n]+"' border='0'>");
document.write("</a>");

FC2ブログで下記【1】を

<script type="text/javascript">
<!--
【1】
// -->
</script>

で囲んで直接プラグインに書き込んだら
文字化けせずに表示されたのですが、

外部ファイルにして

<script type="text/javascript" src="【1】のJSファイルのパス"></script>

をプラグインに書き込んだら、
画像リンクはうまく表示されたのですが、
文字化けしてしまいました。

文字化けしない方法はないでしょうか?


【1】
// ランダムに画像を表示する
jmp = new Array();
img = new Array();
// ジャンプ先...続きを読む

Aベストアンサー

自分は5歳児だろうが主婦だろうが手は抜きません。


とりあえず試しに、

<script type="text/javascript" src="JSファイルへのパス" charset="Shift-JIS"></script>

~と言う風にしてみて下さい( charset="Shift-JIS" というのを付け足す)。それで文字化けが直るようなら、貴方のJSファイルの文字コードは「Shift-JIS」と言う事になります。FC2のBlogサービスですか?それでHPやBlogを作っているのなら、基本的には文字コードはサーバ側、つまりこの場合は「EUC-JP」に統一するべき~という事になります。

一般的に、Windowsの標準の環境だと。前段で述べた様な、様々な種類の文字コードを扱う事が出来ないので。事実上、作業は「Shift-JIS」1択と言う事になります。また『メモ帳(notepad.exe)』では「改行コード」を編集出来ないので、HTMLやJavaScript(JSファイル)を編集するには力不足です。何か特別なソフトとかを使わずに、Windows標準の『メモ帳(notepad.exe)』でJSファイルを編集したのであれば、十中八九、文字コードは「Shift-JIS」になっているはずです。


>文字コード
「文字コード」とは、コンピュータ上でテキストファイル(*.txt)をやり取りする時の方式の事で、現在では100種類近くの文字コードがあります。インターネット上でよく使われる文字コードは、「UTF-8」、「Shift-JIS」、「EUC-JP」~の3種類で、基本的にはこれだけ押さえておけばOKです。

考え方としては、日本語や英語のように。同じ意味を持つ文書でも色んな国の言葉で書く事が出来る様に。コンピュータ上での文書の表し方にも方言というか、色んな国の言葉がある様な物だと思ってて下さい。先に述べた「改行コード」や「BOM無し」とかは忘れて下さい。

で、初心者はコレだけ覚えて置いて欲しいのですが…

・半角英数文字だけなら文字化けは起きない

~と(実際は違いますが、話がややこしくなるので簡単にします)。半角英数文字ってのは「abc,?!#123456+-=」みたいな文字の事です。全角文字とは違うので注意して下さい(全角文字 → abc,?!#123456+-=)。従って逆説的に言えば「日本語を使う時は常に文字コードの影響を受ける」と言う事です。

自分は5歳児だろうが主婦だろうが手は抜きません。


とりあえず試しに、

<script type="text/javascript" src="JSファイルへのパス" charset="Shift-JIS"></script>

~と言う風にしてみて下さい( charset="Shift-JIS" というのを付け足す)。それで文字化けが直るようなら、貴方のJSファイルの文字コードは「Shift-JIS」と言う事になります。FC2のBlogサービスですか?それでHPやBlogを作っているのなら、基本的には文字コードはサーバ側、つまりこの場合は「EUC-JP」に統一するべき~という事になります。

...続きを読む

Qhtmlのfileタグに自動で値を入れる方法

htmlのタグでいって
<input type="file">を用いてファイルをサーバーにアップロードしたいと思っています。で、このとき、ファイル名は任意に選べるのではなく固定で送信したいと思っています。

すなわち、HTMLを読み込んだ時点で、fileのテキストボックスにファイルパスが埋め込まれているか、JavaScriptで、ファイルパスを自動入力するようにしたいと思っています。

最終的には、form内のオブジェクトをすべて非表示にし、onload時にsubmitするような形にしたいと思っています。いろいろ事情があって苦肉の策になっています…。

とりあえず(だめだとは思っていたのですが)
<input type="file" value="ファイルパス" name="filepath">
と直書きにしてみたり
document.all.filepath.value = "ファイルパス";
などとしてみたりしましたがだめでした…。
W3C勧告の使用上はvalueでファイルパスを指定できるようになっているようなのですが、現在の一般的なブラウザでは禁止されているようですね。

このような場合、何らかの方法でfileにファイルパスを自動入力することはできますでしょうか?
もしできない場合、何らかの方法で実現する方法はありますでしょうか?よろしくお願いします。

ちなみに実現できればいい環境は
WinXP環境のIE6です。言語はクライアント言語はJavaScriptのみで、という条件付です。
できないかもしれないのですが、こういうのって必要になるときもあるよなーなどと思っており、もしかしたら解決方法があるかもしれないと思い質問しました。よろしくお願いします。

htmlのタグでいって
<input type="file">を用いてファイルをサーバーにアップロードしたいと思っています。で、このとき、ファイル名は任意に選べるのではなく固定で送信したいと思っています。

すなわち、HTMLを読み込んだ時点で、fileのテキストボックスにファイルパスが埋め込まれているか、JavaScriptで、ファイルパスを自動入力するようにしたいと思っています。

最終的には、form内のオブジェクトをすべて非表示にし、onload時にsubmitするような形にしたいと思っています。いろいろ事情があって苦肉...続きを読む

Aベストアンサー

やっぱ無理じゃないでしょうか。
なにか裏ワザ的な方法で一時的にできたとしても、いつか直されるかもしれないのでおいそれとは使えないし。

>W3C勧告の使用上はvalueでファイルパスを指定できるようになっている
→参考URL 「ユーザが明示的に送信を求めたファイル以外のものは送ってはいけない」とあります。

参考URL:http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/appendix/notes.html#forms-security

Qhtml上で、バッチやexeファイルの起動をしたい

わけあって、学校(養護学校)初心者向けにhtmlでメニューを作っています。
さて、スタートボタンやディスクトップにショートカットを使わず、htmlの中からバッチファイルやexeファイルを起動できるでしょうか?

もし可能ならば、教えてください。OSはWindows XPで起動したいファイルはexeファイルとバッチファイルです。
よろしくお願いします。

Aベストアンサー

<html><head></head>
<body>
<a href="file:///c:/windows/system32/calc.exe">電卓</a>
</body>
</html>

QCSSでボックス幅を文字列に合わせたい

ボックス幅を文字列の幅に合わせるにはどうしたらいいのでしょうか。
テーブルではセルにwidth属性を指定しなくても文字列の幅になりますが、ボックスではwidthプロパティを指定しなかったら領域全体の幅になります。white-spaceプロパティでnowrap指定し、widthプロパティで文字列より小さいサイズに指定するとできるのですが、他に指定する方法があれば教えて下さい。

Aベストアンサー

div等のblock要素ではなくspan等のinline要素によって行う。

<span style="border:solid 1px">文字幅に合わせた枠線</span>

Q子→親ウインドウへデータを受け渡し、子ウィンドウを閉じる。

このような処理はできないでしょうか?

子ウィンドウはコード番号の検索用。該当のコードのリンクをクリックすると、そのコード番号を親ウィンドウのテキストボックスへ落とし込む。そのタイミングで、子ウィンドウは閉じる。
子→親ウインドウへのデータの受け渡しと、子ウィンドウのクローズを同時に行うようなイメージです。
よろしくお願いします。

Aベストアンサー

こんにちは

【親ウィンドウ】
<form action="xxx.php" method="POST" name="myForm">
顧客コード
<input type="text" name="kokyaku_cd" size="10">
<a href="javascript:void(0)" onClick="window.open('search.html','search','menubar=no,height=400,width=300');">検索</a>
</form>

【子ウィンドウ】
<script language="javascript"><!--
function ich(n) {
window.opener.document.myForm.kokyaku_cd.value=n;
window.close();
}
//--></script>

<table>
<tr>
<th>顧客コード</th>
<th>顧客名称</th>
</tr>
<tr>
<td><a href="javascript:ich('ABC商店')">0001</a></td>
<td>ABC商店</td>
</tr>
<tr>
<td><a href="javascript:ich('DEF商店')">0002</a></td>
<td>DEF商店</td>
</tr>
</table>

もしくはNo.1様の言うようにidを設定して
【親画面】
<input type="text" name="kokyaku_cd" size="10" id="kokyaku_cd">

【子画面 function内】
window.opener.document.getElementById("kokyaku_cd").value=n;

でできると思います

こんにちは

【親ウィンドウ】
<form action="xxx.php" method="POST" name="myForm">
顧客コード
<input type="text" name="kokyaku_cd" size="10">
<a href="javascript:void(0)" onClick="window.open('search.html','search','menubar=no,height=400,width=300');">検索</a>
</form>

【子ウィンドウ】
<script language="javascript"><!--
function ich(n) {
window.opener.document.myForm.kokyaku_cd.value=n;
window.close();
}
//--></script>

<table>
<tr>
<th>顧客コード</th>
<t...続きを読む

Qjavascriptでセレクトボックスの"selected"を動的につ

javascriptでセレクトボックスの"selected"を動的につける方法について質問させてください。

現在、以下のようなフォームを作成しました。

<select name='year'>
<option value='2010'>2010</option>
<option value='2011'>2011</option>
</select>年

<select name='month'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
<option value='6'>6</option>
<option value='7'>7</option>
<option value='8'>8</option>
<option value='9'>9</option>
<option value='10'>10</option>
<option value='11'>11</option>
<option value='12'>12</option>
</select>月

<select name='day'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
<option value='6'>6</option>
<option value='7'>7</option>
<option value='8'>8</option>
<option value='9'>9</option>
<option value='10'>10</option>
<option value='11'>11</option>
<option value='12'>12</option>
<option value='13'>13</option>
<option value='14'>14</option>
<option value='15'>15</option>
<option value='16'>16</option>
<option value='17'>17</option>
<option value='18'>18</option>
<option value='19'>19</option>
<option value='20'>20</option>
<option value='21'>21</option>
<option value='22'>22</option>
<option value='23'>23</option>
<option value='24'>24</option>
<option value='25'>25</option>
<option value='26'>26</option>
<option value='27'>27</option>
<option value='28'>28</option>
<option value='29'>29</option>
<option value='30'>30</option>
<option value='31'>31</option>
</select>日


このセレクトボックスに、例えば今日の日付"2010年9月30日"だったら、それぞれの年、月、日の<option>に"selected"をつけたいのですが、javascriptではどのようにして実現したら良いのでしょうか?

よろしくお願いします。

javascriptでセレクトボックスの"selected"を動的につける方法について質問させてください。

現在、以下のようなフォームを作成しました。

<select name='year'>
<option value='2010'>2010</option>
<option value='2011'>2011</option>
</select>年

<select name='month'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
<option value='6'>6</option>
<option value='7'>7</option>
<option value='8...続きを読む

Aベストアンサー

こんな感じで・・・

<script>
window.onload=function(){
var f=document.getElementById("f0");
var ymd=new Date();
checkSelect(f.elements["year"],ymd.getFullYear());
checkSelect(f.elements["month"],ymd.getMonth() +1);
checkSelect(f.elements["day"],ymd.getDate());
}
function checkSelect(obj,val){
for(var i=0;i<obj.length;i++){
if(obj[i].value==val){
obj[i].selected=true;
break;
}
}
}
</script>
<form id="f0">
<div>
<select name='year'>
<option value='2009'>2009</option>
<option value='2010'>2010</option>
<option value='2011'>2011</option>
</select>年

<select name='month'>
<option value='8'>8</option>
<option value='9'>9</option>
<option value='10'>10</option>
</select>月

<select name='day'>
<option value='29'>29</option>
<option value='30'>30</option>
<option value='31'>31</option>
</select>日
</div>
</form>

こんな感じで・・・

<script>
window.onload=function(){
var f=document.getElementById("f0");
var ymd=new Date();
checkSelect(f.elements["year"],ymd.getFullYear());
checkSelect(f.elements["month"],ymd.getMonth() +1);
checkSelect(f.elements["day"],ymd.getDate());
}
function checkSelect(obj,val){
for(var i=0;i<obj.length;i++){
if(obj[i].value==val){
obj[i].selected=true;
break;
}
}
}
</script>
<form id="f0">
<div>
<select name='year'>
<opt...続きを読む


人気Q&Aランキング