jQueryのload関数を使って、日付を元にランダムな10ケタの数字を生成するプログラム(rand.php)を読み込み、そのプログラムの結果をcontentsというIDのdiv内にappendToしたいのです。
そして、5秒ごとにrand.phpを読み込み、そのたびにcontentsというIDのdiv内に結果をappendToしたいのです。
イメージとしては下記のような感じになります。


$(function(){
function loadAndAppend(){
$("div#contents").apendTo(load("rand.php"));
setTimeout(loadAndAppend, 5000);
};
loadAndAppend();
});


しかし、これだとうまくいきません。apendTo(load("rand.php"))という部分がおかしいのでしょうが、これをどう直せばよいか分かりません。

ぜひとも解決法を教えていただけないでしょうか。

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

A 回答 (3件)

上書きではなく追加したいということであれば、私ならajax()関数を使います。



回答#2でご指摘があったsetInterval()関数の件(すいません。これは私の記載ミスでした)を踏まえて、

function loadAndAppend(){
$.ajax({
url: "rand.php",
method: "get",
dataType: "text",
success: function(data, dataType) {
$("div#contents").append(data + "<br/>");
}
});
};
setInterval(loadAndAppend, 5000);

このような感じに記述します。

#私自身、load()関数やget()関数よりもajax()関数ばかり使用しているので上記のソースコードの方が書きやすいです・・・。
    • good
    • 1
この回答へのお礼

こちらを参考にしたところ、見事にうまくいきました!
これがコールバック関数ってヤツなのでしょうか。
なにはともあれ、ありがとうございました!!

お礼日時:2009/05/28 18:43

よくわかりませんが…



一発でうまくいかないのであれば、非表示の要素(取り込み専用の要素)に一度取り込んでから、その内容を目的の要素の内容に付け加えてあげればいいのでは?

ついでながら、setIntervalで自分自身を呼び出すと、処理が累積して発生するはずだと思いますが??
ちなみに、以下の簡単なテストを実行してみると、表示のインクリメントは0、1、2、3…ではなく、0、1、2、4、8、16…となるので多重処理になっていることがわかります。
    • good
    • 0
この回答へのお礼

確かにその方法もありましたね!
ご教示ありがとうございます。

お礼日時:2009/05/28 18:42

jQueryのload()関数は外部ファイル(htmlなど)をロードするだけでなく、それをDOMにappendするところまでやってしまいます。



ですので、この場合のload()関数の使い方は

$("div#contents").load("rand.php");

の記述でいいはずです。

また、
>5秒ごとにrand.phpを読み込み
とありますが、この場合setTimeout()関数ではなくsetInterval()関数を使用します。

それをふまえて全体を書き直すと、

function loadAndAppend(){
$("div#contents").load("rand.php");
setInterval(loadAndAppend, 5000);
};

のようになります。
    • good
    • 0
この回答へのお礼

ご返答ありがとうございます!

試しに実験してみたところ、5秒ごとに読み込まれるのですが
appendというより上書き(html()のような挙動)になってしまいます。

読み込まれるごとに、その結果をどんどん追加(上書きではなく)していきたいのです。

loadしたものを変数に代入してappend、というのも試してみたのですが、こちらもうまくいきませんでした。

$(function(){
function loadAndAppend(){
var myData = $.load("rand.php");
$("div#contents").apendTo(myData);
setInterval(loadAndAppend, 5000);
};

不可能ではないと思うのですが。。。

お礼日時:2009/05/28 11:36

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

jQuery 使い方」に関するQ&A: javascriptの併用

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

このQ&Aを見た人はこんなQ&Aも見ています

この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;
}
ですね。

Qテーブルタグの中にdivを含めてはダメ?

テーブルタグの中にdiv要素を入れるとダメなのでしょうか?
何か不都合でもあるのでしょうか?
何かご存知の方がいれば教えていただけませんか?

Aベストアンサー

以下、HTML 4.01での話です。(XHTMLでもほぼ同じだと思います)

tableタグ直下に書けるのは、caption,col,colgroup,head,tfoot,tbodyと定義されています。
特定の条件下でtbodyが省略できますので、実際はtrも書けます。これら以外は書けないことになっています。
tr直下にはth,tdが書けることになっています(それ以外は不可)。

th,tdの下にはブロック要素が書けるので、divも書けます。

このように、テーブル内でth,tdの中以外でdivが使えないのはHTMLの仕様でそう決まっているからです。

QjQueryでloadした部分に.jsが効かない

jQueryでloadした部分に.jsが効かない

indexなどのページに、別のhtmlで作ったページをjQueryのloadで読み込んでいますが、
読み込んだ部分に、jQueryや他のjavaスクリプトが適応されないページがあり解消ができません。

問題点としましては、同じjavascript、同じhtmlを読み込んでいるはずなのに、
A.html、B.htmlにおいて動作が違うと言う点です。

具体例としましては、
A、Bは全く同じjQueryとロールオーバー用javascript(smartRollover)、ヘッダhtml、サイドhtml、フッタhtmlを読み込み、
内容部分だけ違うという程度ですが、
A.htmlではページ内全てロールオーバーが可能、
B.htmlでは内容部は可能、load読み込み部は不可能です。

A内容、B内容には量的にかなり差があり、比較でA>>>Bです。
そういった経緯から試しにAの内容を空にしてみると、Aも動かなくなりました。

上の結果から量が多いページだと適応されると判断し、結果としてload読み込みのタイミングでは?
と思っておりますが、自分では解消することができませんでした。

ちなみに使用しているjqueryはjquery-1.4.2.min.jsです。

この場合どのような解消方法、または別の問題点が考えられるのでしょうか?
どなたかに助言を頂きたく思いますので、宜しくお願いいたします。

jQueryでloadした部分に.jsが効かない

indexなどのページに、別のhtmlで作ったページをjQueryのloadで読み込んでいますが、
読み込んだ部分に、jQueryや他のjavaスクリプトが適応されないページがあり解消ができません。

問題点としましては、同じjavascript、同じhtmlを読み込んでいるはずなのに、
A.html、B.htmlにおいて動作が違うと言う点です。

具体例としましては、
A、Bは全く同じjQueryとロールオーバー用javascript(smartRollover)、ヘッダhtml、サイドhtml、フッタhtmlを読み込み、
内容部分だけ違う...続きを読む

Aベストアンサー

処理の順序を考えてみればわかると思いますが、

想像では、ご使用のjsはhtml読込み時( onload )にイベントの設定を行なっているのだと思います。
一方、loadで読込まれるコンテンツは、その時点ではまだ存在していないため、イベントの設定がなさません。
そのために、ご質問のような事象がおきていると推測されます。
(質問文からだけで推測していますので、違う原因かも知れません)

後から要素が追加されても、イベント設定を反映することができるlive関数を用いるようにすればうよろしいかと。
 http://api.jquery.com/live/
 http://semooh.jp/jquery/api/events/live/type%2C+fn/

あるいは、loadで追加したコンテンツには別途で同様の設定するとか…

Q配列をファイルに書き込む方法

下記($dataに入ってる)配列をファイルに書き込みたいのですが、書き込み方法が分かりません、教えていただけませんでしょうか・・・。
$dataの中身は
Array
(
[0] => あいうえお
[1] => かきくけこ
[2] => さしすせそ
[3] => たちつてと
)
これを
$fp=fopen("1.txt","w");
fputs($fp,$data);
fclose($fp);
にするとArrayとだけ表示されます。
あいうえお\n
かきくけこ\n
さしすせそ\n
たちつてと\n
と書き込みたいのですが・・・、お願いします。

Aベストアンサー

<?php
$data = Array(
0 => 'あいうえお',
1 => 'かきくけこ',
2 => 'さしすせそ',
3 => 'たちつてと'
);
$fp=fopen("1.txt","w");
foreach ($data as $a){
fputs($fp,$a."\n");
}
fclose($fp);
?>

↑これでいかがでしょうか?

Q宜しくお願いします。

宜しくお願いします。
mix~max値の間、発行したクエリーからの値を配列に入れたいのですが、どうもFor文中にmin,max値は届いているのですが,$resultに値が入りません。
エラーからしてSQLで行っている変数処理に$iの値が届いてない感じがするのですが、下記のソースを見て頂いて、疑わしき点などご指摘、ご教授いただけませんでしょうか。

どうぞ宜しくお願いします。


--エラー文ここから--->
Catchable fatal error: Object of class stdClass could not be converted to string in ...




--ソースここから--->

$min = h($r -> x);
$max = h($s -> y);
for($i=$min ; $i<= $max; $i++){
$search = sprintf("SELECT id FROM Sheet WHERE no='%d'",$i);
$q_search = mysql_query($search);
$result = mysql_fetch_object($q_search);
echo $result;
}

宜しくお願いします。
mix~max値の間、発行したクエリーからの値を配列に入れたいのですが、どうもFor文中にmin,max値は届いているのですが,$resultに値が入りません。
エラーからしてSQLで行っている変数処理に$iの値が届いてない感じがするのですが、下記のソースを見て頂いて、疑わしき点などご指摘、ご教授いただけませんでしょうか。

どうぞ宜しくお願いします。


--エラー文ここから--->
Catchable fatal error: Object of class stdClass could not be converted to string in ...




--ソースここから...続きを読む

Aベストアンサー

PHPあまり詳しくないので間違っていたらすいません。


>$result = mysql_fetch_object($q_search);
でresultはobject型で代入しておりそれを表示するときにString型に変換できていないのが原因かとおもわれます。

参考URL
mysql-query
http://php.net/manual/ja/function.mysql-query.php

mysql-fetch-array
http://php.net/manual/ja/function.mysql-fetch-array.php

mysql_fetch_object
http://phpspot.net/php/man/php/function.mysql-fetch-object.html

Qillegal string offset

php5.3では動いていたプログラムをphp 5.4 で動かしたらwarning illegal string offsetが出て困っています。以下のプログラムでwarningが出ないようにするにはどのようにコーディングすればよいのでしょうか?


$a = array('exists' => 'foo');
if ($a['exists']['non_existent']) {
print 1;
}
print 2;
exit;

Aベストアンサー

isset()を使えばいいと思います

Qforeachで回った数を表示したい

単純な質問ですみません。
====
//getTestlistは別ファイルで定義済み。
<?
$testlist=getTestlist();
foreach($testlist as $test){
?>


<? } ?>
====
例えば↑こんなふうにforeachで$testlistが存在するだけ回したとします。
そのときに何回まわったか?($testが何件あったか?)だけを表示したいのですが、そんなことってできますか?
表示したい位置は<? } ?>の外側にと考えています。
あさってな質問でしたらすみません。
phpVer 4.3

よろしくお願いいたします。

Aベストアンサー

<?
$testlist=getTestlist();
$n=0;
foreach($testlist as $test){
$n++;
?>
<?}?>

<?=$n?>回
とかでよいかと思います。

途中でbreakなどが無ければ
<? echo count($testlist) ?>でも良いかも知れません。

QMySQLで保存できる限界行数

例からなんですが、インターネットの掲示板のデータベースとかでMySQL等を使って保存するやり方があると思います。
 しかし、書き込み内容などが増えれば当然保存する量が増えて重くなったりすると思うのですが、mixiや2chなどの大規模なサイトになってくると書き込み内容の量が相当なものになりデータベースの行数も相当なものになると思うのですが、これらのサイトはどういう風にして膨大な書き込み内容などを管理しているのでしょうか?またMySQLはどのくらいの行数までが軽快な動作を保てるのでしょうか?
データベースはSQL文一つでデータの検索やソートなどができるし今後も使い続けたいものなので教えてもらえると幸いです。

Aベストアンサー

理論的にはディスク容量が許す限り記録可能だと思います。
しかしトラフィックには限界があるわけなので下記のリンクにあるように分散処理するのが一般的でしょうね。
どのくらいで快適に動作するかは環境によって違いますので一概には言えません。

参考URL:http://techtarget.itmedia.co.jp/tt/news/0709/12/news01.html

Q文字列から、特定の文字を削除したい

アンケートで入力された値を受け取り、メールで送信しているのですが、受け取った値から、特定の文字列を削除することは可能でしょうか?

例えば電話番号の入力の場合、
03-xxxx-xxxx →03xxxxxxxx
077-xxx-xxxx →077xxxxxxx
のように、-(ハイフン)が入力されていたら、-を削除した文字列に置換してメール送信したいのです。
入力する時に、3つのテキストエリアに分けるのは諸事情でできないので、特定の文字を削除する関数か処理方法がありましたら、教えていただきたいです。
よろしくお願いします。

Aベストアンサー

str_replace
http://itbtech.itboost.co.jp/man/php_man/function.str-replace.html

<?php
$orig_telno = "03-xxxx-xxxx";

$telno = str_replace("-", "", $orig_telno);
echo $telno;

03xxxxxxxx

“PHP 文字列” あたりをキーワードに検索すれば
そんなに難しいものでもないような。

Q指定されるdiv の部分の再読み込み処理について

javascript についてあまりわからないですが、javascript で以下のようなことをしたいですが、よくやり方がわかないので、わかっている方は教えていただきたいです。
<div id="sample">
この部分には、DBからデータを取り出す処理が入っているとする
</div>

form でsubmitをすると、id が sampleのところの処理を更新してくれる
ようなjavascript はどうやって実現しますか?
よろしくお願いします。

Aベストアンサー

超適当に書いて見た。適切に直してね
<script>
function Getdata() {
var xmlHttp = (window.ActiveXObject)?new ActiveXObject("Msxml2.XMLHTTP"):new XMLHttpRequest();
xmlHttp.open("POST","DB_Access.php",true);
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
var Querydata="prm1=val1&prm2=val2&prm3=val3"; //<=から取ればよい。
xmlHttp.send("Querydata");
xmlHttp.onreadystatechange = function(){
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
document.getElementById("sample").innerHTML=xmlHttp.responseText;
}
};
}
</script>
<form action="#">
------
<input type="submit" onclick="Getdata();return false;">
</form>

超適当に書いて見た。適切に直してね
<script>
function Getdata() {
var xmlHttp = (window.ActiveXObject)?new ActiveXObject("Msxml2.XMLHTTP"):new XMLHttpRequest();
xmlHttp.open("POST","DB_Access.php",true);
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
var Querydata="prm1=val1&prm2=val2&prm3=val3"; //<=から取ればよい。
xmlHttp.send("Querydata");
xmlHttp.onreadystatechange = function(){
if (xmlHttp.readyState == 4 && xmlHttp.stat...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報