元スレ【jQuery】JavaScript ライブラリ総合質問所 vol.2
JavaScript覧 / PC版 /みんなの評価 :
601 = :
※1で代入されたファイル名を使ってPOSTしたいなら
※1での処理ブロックでまとめないと。
ajaxでの処理をおこなう場合は、ajaxの処理結果の
success/failを処理する関数内でまとめる必要がある。
あとは、$.Defferedとpipeをつなげると幸せになれるかも。
602 :
603 = :
>>599
※2よりもあとに※1が動くだろうからそういう書き方は無理やね。
>>601 がいうようにDeffered でなんとかなると思うけど、>>596 のやり方でやるんならこんなのはどうか
$("form").submit(function () {
var postData = {};
var count = 0;
$(this).find('input').each(function () {
~略~
} else if ($(this).prop('type') == 'file') {
count++;
$(this).upload('upload.php', function (res) {
postData[$(this).prop('name')] = res.file; // ※1 アップしたファイル名を返す
count--;
post();
}, 'json');
~略~
});
function post() {
if (count > 0) {
return;
}
$.post('script.php', postData, function (data) {※2
// 書き込み後処理
});
}
post();
return false;
});
あーでもエラー処理のこと考えると Deffered 使うほうがいいね。
604 = :
あっと
> postData[$(this).prop('name')] = res.file; // ※1 アップしたファイル名を返す
ここでの this は each() で回している時の thisとは違うから気をつけて。
一旦変数に入れておかないとダメだと思う。
605 = :
ajaxで通信する以上、結果が返ってくるタイミングも非同期だから
Defferedで結果が出揃うのを待つのはいい手段だと思う。
606 = :
>>601、>>605
ありがとうございます。Deferredは難しくてよく解らなかったのですが、色々調べながらチャレンジしてみました。
$("form").submit(function() {
var postData = {};
var FileUpLoad;
$(this).find('input').each(function() {
~略~
} else if ($(this).prop('type') == 'file') {
FileUpLoad = $(this).upload('upload.php', function(res) {
postData[$(this).prop('name')] = res.file;
alert('アップロード完了'); // ※1
}, 'json');
~略~
});
$.when(FileUpLoad).pipe(function(){
return $.post('script.php', postData);
}).done(function(){
alert('POST送信完了'); // ※2
});
return false;
});
どうもうまくいきません・・・。
理想としては※1→※2の順にしたいのですが、上記では※2→※1となってしまいます。
>>603-604
コード参考にさせていただきます。
> ここでの this は each() で回している時の thisとは違うから気をつけて。
ご指摘ありがとうございます。実用時に修正します。
607 = :
【環境】IE10
【何をしたのか】メニューがマウスオーバーで動くタブを作りましたが
アクティブなタブが選択されている時にそのタブのみアニメーションを止めることが出来ません。
説明が下手なので、スクショです(影が変なのはCSSスレで聞きます…)
試しに「not」を使って.select以外は動かすという記述をしてみたのですが
元々html上でメニュー1に.selectを入れているため
別なタブがアクティブでもメニュー1だけ動かないということになってしまいました。
どなたか解決策をお教えください。よろしくお願いいたします。
608 = :
【サンプルコード】(いじる前のを載せておきます)
$(function() {
$("#tab li").click(function() {
var num = $("#tab li").index(this);
$(".content_wrap").addClass('disnon');
$(".content_wrap").eq(num).removeClass('disnon');
$("#tab li").removeClass('select');
$(this).addClass('select')
});
});
$(function() {
$("#tab li")
.hover(
function(){
$(this).stop().animate({
'marginLeft':'-10px',
'paddingRight':'50px'
},'fast');
},
function () {
$(this).stop().animate({
'marginLeft':'0px',
'paddingRight':'40px'
},'fast');
});
});
609 = :
>>606
(Deferredの部分)
それループで type=fileがあらわれるごとにFileUpLoad に上書きしてるじゃない。
(だから、type=fileがひとつの時はうまく行ってないか?)
Deferred objectをまとめるのは $.when() なんだけど、こんなかんじではどうか?
var FileUpLoad; = $.Deferred().resolve(); // ダミーのDeferred objectを作って完了させておく
~略~
FileUpLoad = $.when(FileUpLoad, $(this).upload(略));
他にも方法有りそうだけど。
610 :
611 = 610 :
612 = :
>>609
おおおお!出来ました!
ありがとうございます!
原理的に何故出来たのかはあまりよく解ってないのですが、とにかく出来て良かったです。
お世話になりました。
613 = :
>>609
わかってないのかよ。
A = $.when(B, C, ...);
は B,C,… すべてが完了したら、Aに登録したcallback関数が呼ばれる。
だから、$.update()の返り値を全部引数に並べればOKなんだけど、
そうは出来ないのであーいうコードになった。
蛇足ながら、元のコードは
var a;
a = $.update();
a = $.update();
a = $.update();
a.完了したら();
と同じだから、最後の$.updat()の完了状態しか見てないってことな。
614 :
615 :
616 :
617 :
618 = :
自由度の高いデザインができるモーダルダイアログのjQueryプラグインでオススメありませんか?
619 = :
やわらかいなり
620 :
621 :
622 = :
やわらかいなり
623 :
624 :
625 = :
やわらかいなり
626 :
ajax()やpost()でのcsrf対策はどうしてますか?
正直今まで全く意識してなかったのですが調べてみるとあまり情報がなく
いくつかあるものも「これだ」って感じのものがありません
どのように対処している、と教えてもらえると嬉しいです
よろしくお願いします
627 = :
やわらかいなり
628 :
629 = :
やわらかいなり
630 = :
CSRFは、むしろサーバ側で対策しないとダメ
リファラを見るか、トークン使うかの2択かな。
631 :
632 :
633 = :
やわらかいなり
634 :
635 = :
やわらかいなり
636 :
Youtubeの動画をポップアップで再生するのはあるけど、
ニコニコ動画も含めて同じことできるものってのは無いのかな?
637 = 634 :
638 :
639 = :
やわらかいなり
640 :
641 = :
スマホサイト向けにjQuery Mobile使いたいなとあれこれ評価して、
重いしバギーだしと捨てたのが1年前。
1.3.0出たぞと再評価してみたけど、やっぱりAndroid2.3向けには重すぎて
iOS6.1用でも若干重いしsafariだとなんかバグっぽい挙動が不安で
結局見送った。
今は1からスマホ用のCSS書いてる。。。俺に土日をくれ。。。
今月の休みねぇよ。。。
642 :
644 = :
ちょっとした(と言っても程度の差はあると思いますが)JQueryプラグイン作成を
ネット経由で予算提示して受注を募るこてできるサイトあったと思うのですがどこでしたっけ?
あるいは捨てアドいただければ概要をお知らせしますので良かったら。
645 :
646 = :
jquery mobileが実用レベルで動いたとして、jquery mobileを使えば>>641が土日休めるようになるほど短縮されるかっていうと、そうでもない気がする
647 = :
>>643
お前の糞コードよりは100000000倍まし。
648 = :
セレクターをul imgで指定すると動作するが
ul li imgで指定すると動作しない…。何故だ…?
649 :
650 = :
やわらかいなり
類似してるかもしれないスレッド
- 【jQuery】JavaScript ライブラリ総合質問所 vol.3 (1001) - [98%] - 2014/6/18 20:58 △
- 【jQuery】JavaScript ライブラリ総合質問所 vol.1 (983) - [98%] - 2012/10/8 22:30
- JavaScript ライブラリ総合質問所 vol.5 (344) - [75%] - 2022/3/14 17:45
- JavaScript ライブラリ総合質問所 vol.4 (985) - [75%] - 2015/12/16 15:00
- jQuery ライブラリ 総合質問所 vol.4 (986) - [65%] - 2016/1/12 15:15
- 1行javascriptプログラミング (431) - [30%] - 2022/8/23 15:30
トップメニューへ / →のくす牧場書庫について