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

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

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

StrutsはJava向けのWebアプリケーションフレームです。MVCモデルに基づいており、JSPやJavaサーブレットを組み合わせ、アプリケーション構築時に使用する各機能を提供しています。

jQuery

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

Ajax

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

822閲覧

ajaxが作動しない

3o.1984

総合スコア12

Struts

StrutsはJava向けのWebアプリケーションフレームです。MVCモデルに基づいており、JSPやJavaサーブレットを組み合わせ、アプリケーション構築時に使用する各機能を提供しています。

jQuery

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

Ajax

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/08/28 01:05

編集2019/08/28 01:23

前提・実現したいこと

ajaxでActionまで値を持っていきUpdateしたい
Actionすら呼ばれません

発生している問題・エラーメッセージ

ajaxが動作しない

該当のソースコード

html

1<input id="kanjiName" name="userdto.userKanjiName" 2value=<s:property value="userdto.userKanjiName" />></input> 3 4<input id="engName" name="userdto.userEngName" 5value=<s:property value="userdto.userEngName" />></input> 6 7<input id="shainBango" name="userdto.userSyainBango" 8value=<s:property value="userdto.userSyainBango" />></input> 9 10<input id="nyuushabi" name="userdto.userNyuusyabi" 11value=<s:property value="userdto.userNyuusyabi" />></input> 12 13<div id="status"> 14<input type="hidden" id="status0" name="userdto.userStatus" value=<s:property value="userdto.userStatus" />> 15<input id="status1" type="radio" name="userdto.userStatus" value="1"> 内定者 16<input id="status2" type="radio" name="userdto.userStatus" value="2"> 現場 17<input id="status3" type="radio" name="userdto.userStatus" value="3"> 新入 18<input id="status4" type="radio" name="userdto.userStatus" value="4"> 待機 <input 19<input id="status5" type="radio" name="userdto.userStatus" value="5"> 退職 20</div> 21 22<input id="memo" name="userdto.userMemo" 23value=<s:property value="userdto.userMemo" />></input> 24 25<input id="bikou" name="userdto.userBikou" 26value=<s:property value="userdto.userBikou" />></input> 27 28<input id="eigyouId" name="userdto.eigyouId" 29value=<s:property value="userdto.eigyouId" />></input> 30 31<input id="hatsuGenba" name="userdto.userHatsugenba" 32type="date" value=<s:property value="userdto.userHatsugenba" />></input> 33 34<input id="renkeiKikan" name="userdto.userRenkeikikan" 35value=<s:property value="userdto.userRenkeikikan" />></input> 36 37<input id="keireki" name="userdto.userTpsKeireki" 38value=<s:property value="userdto.userTpsKeireki" />></input> 39 40<input id="ippanKeireki" name="userdto.userIppanKeireki" 41value=<s:property value="userdto.userIppanKeireki" />></input> 42 43<input id="kanaName" name="userdto.userKanaName" 44value=<s:property value="userdto.userKanaName" />></input> 45 46<input id="korName" name="userdto.userKorName" 47value=<s:property value="userdto.userKorName" />></input> 48 49<input id="ekki" name="userdto.userEkki" 50value=<s:property value="userdto.userEkki" />></input> 51 52<div id="yakusyoku"> 53 54<input type="hidden" id="yakusyoku0" name="userdto.userYakushoku" value=<s:property value="userdto.userYakushoku" />> 55<input id="yakusyoku1" type="radio" name="userdto.userYakushoku" value="1">一般 56<input id="yakusyoku2" type="radio" name="userdto.userYakushoku" value="2">主任 57<input id="yakusyoku3" type="radio" name="userdto.userYakushoku" value="3">課長代理 58<input id="yakusyoku4" type="radio" name="userdto.userYakushoku" value="4">課長 59<input id="yakusyoku5" type="radio" name="userdto.userYakushoku" value="5">次長 60</div> 61 62<input type="hidden" id="KeyMan" name="userdto.userKeyman" value=<s:property value="userdto.userKeyman" />> 63 64<select id="keyman" name="userdto.userKeyman" style="position: absolute; top: 387px; left: 913px; width: 200px; height: 25px;"> 65 66<option name="keyman1" value=1>0.一般</option> 67<option name="keyman2" value=2>1.L</option> 68<option name="keyman3" value=3>2.S</option> 69<option name="keyman4" value=4>3.SL</option> 70</select> 71 72<button onclick="myFunction()" 73style="width: 100px; height: 30px; background-color: #999999; position: absolute; top: 885px; right: 280px;" value="修正">修正</button> 74 75

ajax

1$.ajax({ 2 3 type:'post', 4 url:'UserModifySubmit', 5 data:{ 6 'userdto.userKanjiName':kanjiName1, 7 'userdto.userKorName':korName1, 8 'userdto.userKanaName':kanaName1, 9 'userdto.userEngName':engName1, 10 'userdto.userSyainBango':shainBango1, 11 'userdto.userEkki':ekki1, 12 'userdto.userNyuusyabi':nyuushabi1, 13 'userdto.userYakushoku':yakusyoku007, 14 'userdto.userStatus':Status007, 15 'userdto.userKeyman':parseInt(keyman007,10), 16 'userdto.userMemo':memo1, 17 'userdto.userBikou':bikou1, 18 'userdto.eigyouId':eigyouId1, 19 'userdto.userHatsugenba':hatsuGenba1, 20 'userdto.userGenbaKikan':genbaKikan1, 21 'userdto.userTpsKeireki':keireki1, 22 'userdto.userIppanKeireki':ippanKeireki1, 23 'userdto.userRenkeikikan':renkeiKikan1 24 }, 25 26 success:function(data){ 27 28 alert("ajax成功"); 29 30 }, 31 error : function(err, req){ 32 33 alert("ajax失敗"); 34 } 35 });

javascript

1function myFunction() { 2 3 //名前(漢字) 4 var kanjiName1 = document.getElementById("kanjiName").value; 5 //韓国語 6 var korName1 = document.getElementById("korName").value; 7 //ふりがな 8 var kanaName1 = document.getElementById("kanaName").value; 9 //名前(英語) 10 var engName1 = document.getElementById("engName").value; 11 //社員番号 12 var shainBango1 = document.getElementById("shainBango").value; 13 //最寄り駅 14 var ekki1 = document.getElementById("ekki").value; 15 //入社日 16 var nyuushabi1 = document.getElementById("nyuushabi").value; 17 //役職 18 var yakusyoku1 = document.getElementById("yakusyoku").value; 19 //本社ステータス 20 var status1 = document.getElementById("status0").value; 21 //キーマン 22 var keyman1 = document.getElementById("KeyMan").value; 23 //メモ 24 var memo1 = document.getElementById("memo").value; 25 //備考 26 var bikou1 = document.getElementById("bikou").value; 27 //担当営業 28 var eigyouId1 = document.getElementById("eigyouId").value; 29 //初めて行った現場 30 var hatsuGenba1 = document.getElementById("hatsuGenba").value; 31 //現場期間 32 var genbaKikan1 = document.getElementById("genbaKikan").value; 33 //連携期間 34 var renkeiKikan1 = document.getElementById("renkeiKikan").value; 35 //本社経歴 36 var keireki1 = document.getElementById("keireki").value; 37 //本社以外の経歴 38 var ippanKeireki1 = document.getElementById("ippanKeireki").value; 39 //現場会社名 40 var genbaKaisyamei1 = document.getElementById("genbaKaisyamei").value; 41 //現場の場所 42 var genbaBasyo1 = document.getElementById("genbaBasyo").value; 43 //現場入場日 44 var genbaNyuujyoubi1 = document.getElementById("genbaNyuujyoubi").value; 45 //現場退場日 46 var genbaHyouka1 = document.getElementById("genbaHyouka").value; 47 //給料 48 var kyuuryou1 = document.getElementById("kyuuryou").value; 49 //単金 50 var genbaTankin1 = document.getElementById("genbaTankin").value; 51//radioボタンの値を持ってきています 52var radios = document.getElementsByName("userdto.userStatus"); 53 var Status007; 54 for(var i=0; i<radios.length; i++){ 55 if (radios[i].checked) { 56 Status007 = radios[i].value; 57 break; 58 } 59 } 60//プルダウンの値を持ってきています 61 var element = document.getElementById( "keyman" ) ; 62 var elements = element.options ; 63 for ( var a="", i=0,l=elements.length; l>i; i++ ) { 64 if ( elements[i].selected ) { 65 a += elements[i].value + " " ; 66 break; 67 } 68 }

UserAction

1@Action(value = "/UserModifySubmit") 2 public String UserModifySubmit() { 3 if (userdto.getUserStatus() == 3) { 4 userService.EditUser(userdto); 5 } 6 return "UserModifyInitDone"; 7 }

UserService

1public int EditUser(UserAllInfoDto userdto);

UserServiceImpl

1@Service 2public class UserServiceImpl implements UserService { 3 @Resource 4 private UserDao UserDao; 5@Override 6 public int EditUser(UserAllInfoDto userInfo) { 7 User user = new User(); 8 BeanUtils.copyProperties(userInfo, user); 9 return UserDao.genbaNasiEditUser(user); 10 }

UserDao

1public int genbaNasiEditUser(User userInfo);

UserDaoImpl

1public class UserDaoImpl implements UserDao{ 2 private SqlSession sqlSession; 3@Override 4 public int genbaNasiEditUser(User userInfo) { 5 return sqlSession.update("com.tps.mng.mapper.xml.UserMapper.genbaNasiEditUser", userInfo); 6 } 7

Userxml

1 2<update id="genbaNasiEditUser" parameterType="com.tps.mng.entity.User"> 3UPDATE MANAGER.USER SET USER_KANJI_NAME = #{userKanjiName}, USER_KANA_NAME =#{userKanaName}, 4USER_KOR_NAME = #{userKorName}, USER_ENG_NAME =#{userEngName}, USER_SYAINBANGO =#{userSyainBango}, 5USER_YAKUSYOKU =#{userYakushoku}, USER_STATUS = #{userStatus}, USER_TPS_KEIREKI =#{userTpsKeireki}, 6USER_IPPAN_KEIREKI = #{userIppanKeireki}, USER_BIKOU= #{userBikou}, USER_KEYMAN =#{userKeyman}, 7USER_KYUURYOU =#{userKyuuryou}, USER_EIGYOUID = #{userEigyouId}, USER_NYUUSYABI =#{userNyuusyabi}, 8USER_TAISYOKUBI = #{userTaisyokubi}, USER_RENKEIKIKAN= #{userRenkeikikan}, USER_EKKI= #{userEkki}, 9USER_MEMO = #{userMemo},USER_HATSUGENBA = #{userHatsugenba} 10WHERE USER_ID=#{userId}; 11 </update>

試したこと

最初にこれらはインストールしました

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1/i18n/jquery.ui.datepicker-ja.min.js"></script> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript"> ### 補足情報(FW/ツールのバージョンなど) struts

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

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

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

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

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

m.ts10806

2019/08/28 01:08

何が起きているのでしょうか。 また、ajaxのdataにセットしている変数はそれぞれどのように定義されているのでしょうか。 struts側のコードも含めてコードをなるべく全体提示してください
azuapricot

2019/08/28 01:15

JSはどうでもいいというか関係なさそうなんで(たぶん) 「UserModifySubmit」で指定している先のActionを提示したほうがいいとおもいます
3o.1984

2019/08/28 01:18

了解しました。 只今記入致します。
m.ts10806

2019/08/28 01:21

そのままで動かないコードを提示されても誰も再現確認できませんので、 コードブロックの上にファイル名を明記するなどして1ファイル1ブロックでまとめてください。 あとバージョンが違うjQueryを読み込んでいることを指摘されていますが、動かない要因には十分なり得ます。 まず確認すべきはブラウザ開発ツールのコンソールなのでそちらにエラーが出ていないか確認して結果を追記してください。(Java側を疑うのはそのあと)
3o.1984

2019/08/28 01:29

コンソール側にエラーはありません。 ボタンを押してajaxのコードの直前まではalertで確認できているのですがajaxでActionすら呼ばれない状況です。
m.ts10806

2019/08/28 01:33

ではJava側にエラーが出ていないか確認してみては?
3o.1984

2019/08/28 01:42

ajaxのurlを新しく作った機能がなにもないAction名へ変えてもそのアクションに行かないですね
m.ts10806

2019/08/28 01:46 編集

url:'UserModifySubmit', で指定しているURLがなければコンソールにエラーが出るはずですけど 出てないのなら呼び出しはできていると思います。(それかそもそもajaxのところまで処理がいってないか) Ajax実行結果のerror のほうに飛んでるということですか? それなら引数で受け取っているerr, reqをconsole.log()で出力してください。
3o.1984

2019/08/28 01:50

ajaxの直前まではalertで到達していることは確認済みです。 console.logで出力を試みましたが、何も表示されませんでした。
3o.1984

2019/08/28 01:53

urlを指定してはいるのですが、コンソールは全く読み込まない状態(コンソールに進展がない)です。
azuapricot

2019/08/28 01:56

AjaxのエラーってFireFoxだと接続時のエラー見れたりしますけど試してみました? ChromeやIEだと表示されなくてもFirefoxはAjax時のエラーが結構細かく出てくれたりします
退会済みユーザー

退会済みユーザー

2019/08/28 02:12 編集

Fiddler をインストールして要求・応答をキャプチャして、中身を見てみませんか? そこに解決のためのヒントがあるのではと思います。期待通りに要求が出ているか、応答が返ってきているか、内容は期待通りかが分からないと闇夜に鉄砲という感じです。
m.ts10806

2019/08/28 02:19

alert()で出てconsole.log()で出ないってないと思いますが・・・ alert()のように画面に何か表示されるわけではなく、ブラウザの開発ツールのコンソールタブに出ます。 他にも色々デバッグのやり方はありますが・・・ https://ics.media/entry/190517/
m.ts10806

2019/08/28 02:20

あ、いやちょっと勘違いしてましたね。 要はerror()には飛んでない=alert("ajax失敗");は実行されない ということでしたね。失礼。
3o.1984

2019/08/28 02:24

FireFoxで確認したところ、parseInt(keyman007,10),のところが間違っていたみたいです。 問題なくActionへ飛ぶことができました。 アドバイスしてくれた皆様本当にありがとうございました。
m.ts10806

2019/08/28 02:26

提示されているコードの限りでは変数未定義 (または定義した変数をちゃんと使ってない)とかそういうところでしょうか。(でもそれってJavaScriptのエラーありそうですけど)
azuapricot

2019/08/28 02:29

解決したら自己解決として解決方法を明記の上質問を締めて下さい。
guest

回答2

0

自己解決

ajaxの中の'userdto.userKeyman':parseInt(keyman007,10),を、javascriptの中で
var element = document.getElementById( "keyman" ) ;

var elements = element.options ; for ( var a="", i=0,l=elements.length; l>i; i++ ) { if ( elements[i].selected ) { a += elements[i].value + " " ; break; } }

をし、'userdto.userKeyman':parseInt(a,10)に変更したらActionまで行けるようになりました

投稿2019/08/28 02:36

3o.1984

総合スコア12

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

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

0

質問文を見る限りjQueryのバージョン違いをダブルで呼んでいますが大丈夫ですか?

投稿2019/08/28 01:12

yambejp

総合スコア114572

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

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

3o.1984

2019/08/28 01:16

ネットで見つけたサンプルのajax文は作動し、私が記入したコードが動かない状況です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問