質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

解決済

1回答

941閲覧

Ajaxでデータを格納した後のhtml構造がafterで追加されない。

退会済みユーザー

退会済みユーザー

総合スコア0

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

2クリップ

投稿2018/04/27 09:12

編集2018/04/27 09:49

##わからないこと
いつも大変お世話になっております。
この度ajaxを通して非同期処理を行い、結果の箇所でビュー側にtableを追加しようとしているのですが、うまくいっておりません。
処理は通っているのですが、どこが原因なのかわかっていないのでご教授いただければ幸いです。

javascript

1 2$(".js-open-copy").click(function(e) { 3 e.preventDefault(); 4 var url = $(this).attr("href"); 5 modalCopy(url); 6 }); 7 // }}} 8 // modalMatching {{{ 9 var modalCopy = function(href){ 10 var $bigModel = $("#copyModal").modal(); 11 $bigModel.find(".modal-body").resizable({ 12 handles: "e", 13 resize: function(e, ui){ 14 var parent = ui.element.parent(); 15 ui.element.siblings().css('width', (1 - ui.element.width()/parent.width())*100+"%"); 16 }, 17 stop: function(e, ui) { 18 var parent = ui.element.parent(); 19 ui.element.css('width', ui.element.width()/parent.width()*100+"%"); 20 } 21 }); 22 $.ajax({ 23 type: "POST", 24 url: href, 25 }).done(function(html){ 26 var $dom = $(html); 27 $("#copyModal").find(".modal-body").empty().append($dom); 28 $("#copyModal").find(".table-search td > a").click(idEditBtnClicked); 29 $("#copyModal").find(".js-add-job-copy").click(function(e) { 30 e.preventDefault(); 31 var url = $(this).attr("href"); 32 addCopy(url); 33 }); 34 }).fail(function(error){ 35 $("#copyModal").modal('hide'); 36 }); 37 return false; 38 }; 39var addCopy = function(url) { 40 $.ajax({ 41 type:"POST", 42 url:url, 43 }).done(function(html){ 44 var i = 0; 45 var tag = ''; 46 var table = '<table class="table-search m-a-0" id="jobTable"'+ html.jobid +'"">'; 47 $.each(html.jitems, function(index, value) { 48 var tr ='<tr><th>'+ value.meta.name + '</th><td data-meta=' + html.jitems[i] + '><span>' + value.html + '</span><a href="javascript:void(0)"><i class="fa fa-pencil"></i></a></td></tr>'; 49 i++; 50 $(table).prepend(tr); 51 }); 52 var tableEnd = '</table>'; 53 var ht = $(table).prepend(tableEnd);console.log(ht); 54 // $("#copyModal").find('table').after(html); 55 // $("#copyModal").find('table.table-search:last').after(ht); 56 $("#copyModal").find(".client-table-box").after(ht); 57 }).fail(function(){ 58 $("#copyModal").modal("hide"); 59 }); 60 };

html

1<div class="client-table-box"> 2<table class="table-search m-a-0" id="jobTable{{$jobid}}"> 3@foreach($jitems as $jitem) 4<tr> 5<th></th> 6<td data-meta=""><span></span><a href="javascript:void(0)"><i class="fa fa-pencil"></i></a></td> 7</tr> 8@endforeach 9</table> 10</div> 11<a href="" class="js-add-job-copy">追加でコピーする</a> 12
<div class="modal fade in" id="copyModal"> <div class="modal-dialog modal-xl"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">×</button> <h5 class="modal-title">コピー</h5> </div> <div class="modal-body p-a-0 clearfix"> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">閉じる</button> </div> </div> </div> </div>

php

1public function addcopy() { 2 $time = microtime(true); 3 $jobId = request()->input('jobid'); 4 5 $client = Job::select('client_id')->where('id',$jobId)->first(); 6 $client = $client['client_id']; 7 $fulltext = Fulltext::select('id','phase_id','data')->where('type', 'client')->where('main_id', $client)->first(); 8 $meta = []; 9 foreach (Cmeta::select('citem_id', 'value')->where('client_id', $client)->get()->toArray() as $cmeta) { 10 $meta[$cmeta['citem_id']] = $cmeta['value']; 11 } 12 \DB::statement('SET FOREIGN_KEY_CHECKS=0;'); 13 $jmeta = Job::createSet($client); 14 $data = ['client'=>$meta,'meta'=>[$jmeta['jitem_id']=>$jmeta['value']]]; 15 if ($jobId) { 16 foreach (Jmeta::select('jitem_id','value')->where('job_id', $jobId)->where('jitem_id','!=',$jmeta['jitem_id'])->get()->toArray() as $orig) { 17 $meta = new Jmeta(); 18 $meta['job_id'] = $jmeta['job_id']; 19 $meta['jitem_id'] = $orig['jitem_id']; 20 $meta['value'] = $orig['value']; 21 $meta->save(); 22 $data['meta'][$orig['jitem_id']] = $orig['value']; 23 } 24 } 25 $cdata = $fulltext['data']; 26 $cdata['job'][$jmeta['job_id']] = $data['meta']; 27 Fulltext::where('id', $fulltext['id'])->updateData($cdata); 28 Fulltext::where('id', $fulltext['id'])->update(['phase_id'=>-1]); 29 Fulltext::incrementPhase('client', $fulltext['phase_id'], -1); 30 Fulltext::incrementPhase('client', -1, 1); 31 $fulltext = new Fulltext(); 32 $fulltext['type'] = 'job'; 33 $fulltext['main_id'] = $jmeta['job_id']; 34 $fulltext['time'] = $time; 35 $fulltext->setData($data); 36 $fulltext->save(); 37 Fulltext::incrementPhase('job', 0, 1); 38 \DB::statement('SET FOREIGN_KEY_CHECKS=1;'); 39 40 41 42 $jitems = [5, 39]; 43 $jHash = array_flip($jitems); 44 45 $models = call_user_func('\App\Models\Jitem::select', 'id', 'name', 'meta')->whereIn('id', $jitems)->get()->toArray(); 46 foreach ($models as $item) { 47 $meta = $item['meta']; 48 $meta['item'] = $item['id']; 49 $meta['name'] = $item['name']; 50 $meta['komoji'] = 'j'; 51 $meta['id'] = $jmeta['job_id']; 52 $data[$jHash[$item['id']]] = ['meta'=>$meta]; 53 } 54 $items['j'] = $data; 55 56 foreach (Jmeta::select('id', 'jitem_id','value')->where('job_id', (int)$jmeta['job_id'])->whereIn('Jitem_id', $jitems)->get() as $meta) { 57 $itemi = $jHash[$meta['jitem_id']]; 58 $items['j'][$itemi]['meta']['value'] = $meta['value']; 59 $items['j'][$itemi]['html'] = $meta->getHtml($items['j'][$itemi]['meta']); 60 } 61 // }}} 62 // $citems {{{ 63 $jitems = []; 64 foreach (array_keys($items['j']) as $i) { 65 if (isset($items['j'][$i]['meta']['value']) && $items['j'][$i]['meta']['value'] !== '') { 66 $jitems[] = $items['j'][$i]; 67 } 68 } 69 $params['jitems'] = $jitems; 70 $params['jobid'] = $jmeta['job_id']; 71 72 return $params; 73 }

不明な個所は、Jquery最後にある「after」の箇所でございます。

何卒よろしくお願い申し上げます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/04/29 12:16

質問用に現象が再現できる最低限のコードを別に用意して追記しよう
vapordog

2018/04/30 00:08

$(".js-open-copy").click(function(e) と、js-open-copyの要素をクリックしないと何も始まらないのに提示されたソースにその要素が見当たらないのはなぜ?
guest

回答1

0

ベストアンサー

質問が不十分で申し訳ございません。
上記のjavascriptのうち、最下部のajaxにてtable構造を作成しようとしていたのですが、そこでtableの中身を作成できていなかったのが問題でした。
tableの中身を最初に作成して変数にいれ、最後にそれをtableタグで囲むことでうまく作成することができました。

投稿2018/04/30 00:28

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問