ajaxでpost送信時、type:htmlで取得

このQ&Aのポイント
  • ajaxでpost送信時、type:htmlでレスポンスデータを取得する方法について解説します。
  • 具体的な質問内容を事例として挙げ、問題が解決する理由や対処法について説明します。
  • また、質問者が実装していたコードについても参考になるポイントを指摘します。
回答を見る
  • ベストアンサー

ajaxでpost送信時、type:htmlで取得

お世話になります。 質問内容を貼ろうとしたら、 }); }); }); となっていたので、先ほど見ていた http://okwave.jp/qa/q6758062.html を思い出し、ベストアンサーと同じように }); return false; }); }); としたら、問題が解決しました。 今まで、送信時に、beforeSend箇所で送信内容を確認していて、送信後のレスポンスデータの内容を、そのままページ推移なしで#searchResult箇所にて表示させたいと思っていたのですが、直ぐエラーが表示されてしまってました。 上記の方法でなぜ解決するのでしょうか? どなた様かご教授願えませんでしょうか。宜しくおねがいします。 $(function() { $("form").submit(function(){ $.ajax({ url: "./query_all-print.cgi", type: "GET", data: $("form").serialize(), dataType: 'html', beforeSend: function ( jqXHR, settings ) { alert( settings.type ); alert( settings.url ); }, success: function(data,msg){ $('#searchResult').html(data);// 通信成功時は応答内容を<div>要素に反映 alert( "通信処理: " + msg ); alert( "レスポンスデータ、" + data ); }, error: function(XMLHttpRequest, textStatus, errorThrown) { $("#searchResult").html("エラー : " + textStatus); } }); return false; }); });

  • taku0
  • お礼率80% (160/199)

質問者が選んだベストアンサー

  • ベストアンサー
noname#247307
noname#247307
回答No.1

このreturn false;って、$("form").submit()の引数に指定されている関数のreturnですよね? submitはフォームを送信するメソッドで、return falseしないと終了後にフォームが送信されてしまいます。return falseによってフォームが送信されないようにしています。それが影響してるんじゃないでしょうか。

taku0
質問者

お礼

jqueryで.submit()の場合に、デフォルト動作を止める。という事をしないといけなかったんですね。 勉強になりました。ありがとうございます。

関連するQ&A

  • AJAXの書き方について

    <script type="text/javascript"> $( function() { $( '#ajax-button' ) .click( function() { $.ajax({ url: 'http://localhost:8080/app/family', type:'GET', data: {test1 : 'aaa', test2 : 'bbb' }, dataType: 'jsonp', success: function(data) { alert("ok"); }, error: function(XMLHttpRequest, textStatus, errorThrown) { alert("ng"); } }); }); } ); </script> この部分は何を意味しているのでしょうか? $( '#ajax-button' ) .click( またここの部分をIDにして二つ別々のIDを書いてblur(fn()にしたい場合はどうすればいいのでしょうか? $("[id$=NO]").blur(function(){ $("[id$=NM]").blur(function(){ function() { $.ajax({ url: 'http://localhost:8080/app/family', type:'GET', data: {test1 : 'aaa', test2 : 'bbb' }, dataType: 'jsonp', success: function(data) { alert("ok"); }, error: function(XMLHttpRequest, textStatus, errorThrown) { alert("ng"); } }); }); }); }); このようにしても動きません。 正しい書き方を教えていただきたいです。

  • ajaxの結果をphpで取得する方法

    お世話になっております。 PHPは全くの初心者ですが、jqueryのajaxでGETした内容を PHPでも使用したく、ご教示願いたいのですが、 以下のajaxの「info.a」の値をphpで使用するには どうすればよいでしょうか。 $.ajax({ type: 'GET', scriptCharset:'utf-8', url: '/hoge.jsp', dataType: 'text', cache : false, }) .success(function(data){ var data = data.split(','); info = { a :data[0], b :data[1], }; }) .error(function(XMLHttpRequest, textStatus, errorThrown) { return false; }); <?php $a = $_GET['info.a']; ?> 何卒よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • jQuery.ajax()のリクエストが返らない

    下のような通信処理を書いています。 var returnObj = null; var errorMsg = ''; function getAjaxHttpRequest(prms) { returnObj = null; if (prms["sendXml"] == null) { prms["sendXml"] = ""; } jQuery.ajax({ contentType: prms["contentType"] , type: prms["type"] , url: prms["url"] , timeout: prms["timeout"] , cache: prms["cache"] , async: false , processData: false , data: "formId=" + prms["formId"] + "&submitStatus=" + prms["submitStatus"] + "&appId=" + prms["appId"] + "&data=" + prms["sendXml"] , success: function(data, dataType) { errorMsg = ""; } , error: function(XMLHttpRequest, textStatus, errorThrown) { errorMsg = textStatus + ' - ' + errorThrown; } , complete : function(xmlHttpRequest, textStatus) { var READYSTATE_COMPLETED = 4; if( xmlHttpRequest.readyState == READYSTATE_COMPLETED ) { var HTTP_STATUS_OK = 200; if( xmlHttpRequest.status == HTTP_STATUS_OK ) { returnObj = { resultCode: 'success' , data: xmlHttpRequest.responseText }; } else { if (xmlHttpRequest.responseText == '') { returnObj = { resultCode: 'error' , textStatus: xmlHttpRequest.status + " - " + xmlHttpRequest.statusText , responseText: errorMsg }; } else { returnObj = { resultCode: 'error' , textStatus: xmlHttpRequest.status + " - " + xmlHttpRequest.statusText , responseText: xmlHttpRequest.responseText }; } } } else { returnObj = { resultCode: 'error' , textStatus: xmlHttpRequest.readyState + " - " + xmlHttpRequest.status + " - " + xmlHttpRequest.statusText , responseText: xmlHttpRequest.responseText }; } errorMsg = ''; } }); return returnObj; } まれに最後のreturnObjがnullで返ってくるようです。なぜでしょうか? 何が起きている可能性があるでしょうか。 jquery-1.4.3です。

  • 関数から一気に抜ける

    お世話になります。 不適切なデータを送らないためのスクリプトを書いています。 <form onsubmit="return func1(this);"> (省略) </form> func1 (frm1){   if (frm1.elements[0]~~~) {     alert(msg0);     return false;   } (省略)   if (frm1.elements[99]~~~) {     alert(msg99);     return false;   }   return true; } このように書く代わりに func1 (frm1){   if (frm1.elements[0]~~~) {     exodus(msg0);   } (省略)   if (frm1.elements[99]~~~) {     exodus(msg99);   }   return true; } function exodus(msg) {   alert(msg);   xxxx false; } とかこんな風に書けたらいいなと思うのですが この「xxxx」に相当するような機能はJavaScriptにあるのでしょうか? よろしくお願いします。

  • ajaxのレスポンスが取得できない。

    環境【cakePHP2.X, PHP5.5】 cakephpでajaxを試みてますがうまくいきません。 あるサンプルを参考にして ボタンのクリックをトリガに ajaxMethod()を走らせて alertで"tanaka"を表示させたいのですが なぜかOeders/index.ctpのhtmlを 取得し、長々と表示されてしまいます。 意図した結果を取得できるよう アドバイスを戴けたら嬉しいです。 よろしくお願いします。 【OrdersController.php】 class OrdersController extends AppController { function index() { //初期表示処理 } /** * Ajax用関数 */ function ajaxTest() { $this->autoRender = FALSE; if($this->request->is('ajax')) { return $this->data['name']."さん、こんにちは"; //echoでもOK } } } 【add.ctp】 function ajaxMethod() { $.ajax({ url: "Orders/ajaxTest", type: "POST", data: { name : "tanaka" }, dataType: "text", success : function(response){ //通信成功時の処理 alert(response); }, error: function(){ //通信失敗時の処理 alert('通信失敗'); } }); }

  • phpに値が送られない

    PHP側に値が送られなくて困ってます!! どなたか助けて頂けないでしょうか $(function() { $('a') .click(function() { var id = this.id; alert(id); $.ajax({ type: 'POST', dataType:'json', url:'editor_text.php', data:{ item:id }, success:function(data) { alert(data); }, error:function(XMLHttpRequest, textStatus, errorThrown) { alert(textStatus); } }); }); });

    • ベストアンサー
    • AJAX
  • jquery,ajaxによるphp通信でnull

    初めまして。 現在jqueryを勉強中の学生です。 いろいろなサイトを参考にしつつ、試しににjquery・ajaxを使ったphpとの通信を試みているのですが、文字列のやりとりがうまくいきません。 数字ではうまくいくのですが、文字になるとalertの部分でnullと返されてしまいます。 アドバイス等頂ければと思います。 よろしくお願いいたします。 以下部分的ではありますがコードを示します。 (jqueryはjquery-1.11.1.min.jsを使用) [js] $.ajax({ type: "POST", url: "step1.php", data: send_data, success: function(receive_data) { var parseAr = JSON.parse(receive_data); alert(parseAr[0]['name']); }, error: function(XMLHttpRequest, textStatus, errorThrown) {alert('Error: ' + errorThrown); } }); return false; [php側] <?php if(isset($_POST['name'])) { $result = array(); $result[] = array('name'=>'織田', 'age'=>'33'); $result[] = array('name'=>'織田', 'age'=>'33'); echo json_encode($result); } else { echo json_encode('The parameter of "name" is not found.'); } exit; ?>

  • Ajaxがおかしいんです

    Javascript初級者です。 Ajaxを使ってデータの重複チェックを行おうとしました。 ところがAjaxがヘンな動きをするんです。 以下のコードなんですが、上の登録処理の中で、function doubleCheck を呼んで います。 問題は2つあって、ひとつは実際に重複していてもしていなくても「true」を 返してくることです。 console.log("res=========" + res) には「yes」とか「no」とか重複有り無しで 異なりますが、ちゃんとそれぞれセットするにも関わらず、 if(!doubleCheck() では必ず「false」が戻ってきてしまいます。 もう一つおかしい点は、重複検索(これはPHPでやってます)の最中にもかかわらず、 「true」が返ってきて "重複があったので登録できません。" お、出てしまうことです。 それで調査するために console.logその2を入れてみました(※※※のところ)。 ところがこの console 何も吐き出しません。 ということは doubleCheck() の最後の if文にたどり着いていない、または 途中でエラーになっているのかもしれません。 私の書いた Ajax のコードがおかしいんでしょうか。 どなたか御指導下さい。 よろしくお願いします。 // 追加登録処理 function doActionAdd(){ if(dataCheck()){ // customerId が 空白か否かのチェック if($('#customerId').val() == ""){ if(window.confirm("追加登録していいですか?")){ if(!doubleCheck()){ window.alert("重複はありませんでした"); }else{ window.alert("重複があったので登録できません。"); }  (以下略) function doubleCheck(){ var yomi = $('#customerYomi').val(); var res = ''; // 重複チェック $.ajax({ type: "POST", url: "../customer/CustomerDoubleCheck.php", data: {"customerYomi":yomi}, dataType: 'text', // ajax通信が成功したときの処理 success: function(request){ console.log("request=========" + request); var json = JSON.parse(request); console.log(json[0].result ); res = json[0].result; console.log("res=========" + res); }, error: function(XMLHttpRequest, textStatus, errorThrown){ $('div#jobStatus').text("重複チェック検索ができませんでした。"); return false; } }); console.log("resその2=========" + res); //※※※ if(res == "yes"){ // 重複していたので「false」を返す。 return false; }else{ // 重複していなかったので「true」を返す。 return true; } }

  • Ajaxの使い方がおかしいでしょうか?

    Javascript の初級者です。 今、Formを使って更新処理しようとしています。 同時に、submitが押されたときに、データをチェックするために関数に 飛ばしています。 ★印のところだけが「true」で他のところは「false」なので処理を中断させたいと 考えています。 Ajaxを非同期で実行すると訳が分からなくなってしまったので同期処理にしています。 ところがどのような条件でsubmitしてもFromが実行されてしまいます。 Ajaxの success 下にこのような分岐処理を書くのは間違いなんでしょうか。 どなたかお分かりになる方、ご指導下さい。 よろしくお願いします。 function upadateCheck(){ var strYear = $("#year").val(); var strMonth = $("#month").val(); var strClosingDate = $("#closingDate").val(); $.ajax({ async: false, // 同期処理 type: "POST", url: "/customercheckclosingdate", data: {"closingDate":strClosingDate,"year":strYear,"month":strMonth,}, dataType: 'text', success: function(request){ var arr = eval(request); var data = arr[0]; if(data.result == "nothing"){ window.alert("指定の「締日」の得意先はありませんでした。"); return false; }else if(data.result == "no"){ window.alert("指定の「処理年月」と「締日」で更新処理を行うには、締日の不整合があります。"); return false; }else{ if(window.confirm("締日:" + strClosingDate + "日\n処理年月:" + strYear + "年" + strMonth + "月\n\nの更新処理を行います。")){ return true; ★★★★★★★★★★★★★★★★ }else{ return false; } } }, error: function(msg){ alert( "Data Saved: " + msg ); return false; } }); } <form method="POST" action="/update" onsubmit="return upadateCheck()"> <table> <tr> <th>締   日:</th> <td> <input type="hidden" id="year" name="year"> <input type="hidden" id="month" name="month"> <SELECT id="closingDate" name="closingDate" > <OPTION value="05">5</OPTION> <OPTION value="10">10</OPTION> <OPTION value="15">15</OPTION> <OPTION value="20">20</OPTION> <OPTION value="25">25</OPTION> <OPTION value="末">末</OPTION> </SELECT> </td> <td colspan="2"> <input type="submit" value="更新処理" /> </td> </tr> </table> </form>

  • 2つのjavascriptを組み合わせたい

    フォームメール用の2つのjavascriptがあります。 ●2重送信防止とデータ送信後指定ページへ遷移するjavascript ●テキストボックスが空欄だった時にアラートを表示するjavascript の2つです。 この2つを組み合わせようとしたのですが、うまく動きません。 ご指導いただきたくお願いいたします。 *************************************************** 【●2重送信防止とデータ送信後指定ページへ遷移するjavascript】【動きます】 送信ボタン押下後、2重送信を防止しながら、データ送信後は「location.href = "finish.html"」でfinish.htmlを表示します。 <script type="text/javascript" src="js/jquery.js"></script> <script> jQuery(function($) { $('#form1').submit(function(event) { // HTML送信キャンセル event.preventDefault(); //フォーム要素取得 var $form = $(this); // 送信ボタンを取得 // (後で使う: 二重送信防止) var $button = $form.find('button'); // 送信 $.ajax({ url: $form.attr('action'), type: $form.attr('method'), data: $form.serialize() + '&delay=1', timeout: 10000, // 送信前 beforeSend: function(xhr, settings) { // ボタン無効二重送信防止 $button.attr('disabled', true); }, // 応答後 complete: function(xhr, textStatus) { // ボタン有効再送信許可 $button.attr('disabled', false); }, // 通信成功処理 success: function(result, textStatus, xhr) { // 入力値初期化 $form[0].reset(); location.href = "finish.html"; }, // 通信失敗処理 error: function(xhr, textStatus, error) { alert('retry');} }); }); }); </script> <form name="form1" id="form1" method="POST" name="form1" action="insert.php"> <input type="text" name="tel" value="" /> <input type="text" name="fax" value="" /> <input type="submit" value="送信A"> </form> *************************************************** 【●テキストボックスが空欄だった時にアラートを表示するjavascript】【動きます】 テキストボックスが空欄だったらアラートを表示します。 <script> function check3() {   var tel3 = document.form1.tel.value;   var fax3 = document.form1.fax.value;   var isValid = true;   if (!tel3) {     alert("電話未入力");     isValid = false;   }   if (!fax3) {     alert("FAX未入力");     isValid = false;   }   if (!isValid) {     return;   }   document.form1.submit(); } </script> <form name="form1" id="form1" method="POST" name="form1" action="insert.php"> <input type="text" name="tel" value="" /> <input type="text" name="fax" value="" /> <input type="submit" value="送信B" onclick="check3();"> </form> *************************************************** 【上記の2つを組み合わせてみました。】【動きません】 テキストボックスが空欄だったらアラートを表示しながら2重ボタン排除&finish.htmlに遷移というものです。 【結果】 「問題なく動くjavascript」2つを単純に組み合わせただけなのですが、 finish.htmlに遷移せずinsert.phpが表示されます。ご指導宜しくお願いします。 <script type="text/javascript" src="js/jquery.js"></script> <script> jQuery(function($) { $('#form1').submit(function(event) { event.preventDefault(); var $form = $(this); var $button = $form.find('button'); $.ajax({ url: $form.attr('action'), type: $form.attr('method'), data: $form.serialize() + '&delay=1', timeout: 10000, beforeSend: function(xhr, settings) { $button.attr('disabled', true); }, complete: function(xhr, textStatus) { $button.attr('disabled', false); }, success: function(result, textStatus, xhr) { $form[0].reset(); location.href = "finish.html"; }, error: function(xhr, textStatus, error) { alert('retry');} }); }); }); </script> <script> function check3() {   var tel3 = document.form1.tel.value;   var fax3 = document.form1.fax.value;   var isValid = true;   if (!tel3) {     alert("電話未入力");     isValid = false;   }   if (!fax3) {     alert("FAX未入力");     isValid = false;   }   if (!isValid) {     return;   }   document.form1.submit(); } </script> <form name="form1" id="form1" method="POST" name="form1" action="insert.php"> <input type="text" name="tel" value="" /> <input type="text" name="fax" value="" /> <input type="submit" value="送信B" onclick="check3();"> </form>

専門家に質問してみよう