アプリ版:「スタンプのみでお礼する」機能のリリースについて

AJAXについて質問です。

返ってきたリクエスト結果をそのままHTMLに表示させているのですが

一瞬だけ表示されたあとにすぐ消えてしまいます。

ajax通信成功時に実行される関数にconsole.logを記述しておくと、

やはり一瞬だけコンソール欄に表示されるだけです。

エラーは無しです。

こうなってしまう理由としてどんな要因が考えられますか?

どなたかご教授頂けたら嬉しいです。

A 回答 (4件)

こんにちは。



原因はサブミットの実行を止めていないからです。

search()を実行後にformのサブミットがかかってしまっているため、ページがリロードされています。

$("form").submit(function() {
search();
return false;
}

こうすればお望みの動きになると思います。

==== 動作確認サンプル
http://hppg.moe.hm/okwave/qa/q7304105/

この回答への補足

レスポンスが空だった理由がようやく判明しました。
サーバーサイドのプログラムは文字通りサーバーに(xamppのhtdocs内)に置いていたのですがhtmlとjsをマイドキュメントに入れたままエディタのプレビューで実行していたためステータスを受け取れていなかったようです。
逆になぜIEでは実行できていたのか謎です。
親切に回答していただきありがとうございました。

補足日時:2012/02/15 04:11
    • good
    • 0
この回答へのお礼

ありがとうございます!
return false入れたらリロードされなくなりました。
ただIEだと上手く表示されるのですが
何故かFirefoxだと空のレスポンスが返ってきてるので思考錯誤しております。

お礼日時:2012/02/14 17:51

こんにちは。



なんでしょうね。動作確認に上プログラムはIEでもFirefoxでも同じ動きをしています。

サブミットのキャンセルが何かまずいのだとしたら、ボタンのtypeをbuttonにしてそのボタンをクリックで$.ajaxを実行するようにしてみてはどうでしょうか。
    • good
    • 0
この回答へのお礼

何度もすいません。
buttonをclickでもダメでした。
レスポンスは返っては来ているのですが
an empty string
となっています。
firebugで見ると返ってきたContent-Lengthというのが
7となっているので何らかのものは受け取っているのですが
表示はされていません。
ググっていたらfirefoxはコンテンツタイプに敏感という記事を
見つけたので、この辺をいじっているんですが改善されないですorz

お礼日時:2012/02/14 22:00

質問文からなんとなく想像されるのは、ajax処理の直後にリロードしてたりしませんか?


もちろん意図的ではないでしょうが、結果的にリロードするような処理がはしっていたり…
    • good
    • 0
この回答へのお礼

返信遅くなってしまいすいません。ありがとうございます。
たしかに一瞬で何かがリロードされてるようにも見えるのですが、
ajax通信成功時の関数はconsole.lpgのみで
サーバーサイド側はechoだけなのでコードを見るかぎりでは
リロードしそうなとこが見当たりません(汗)

お礼日時:2012/02/14 14:48

こんにちは。



ぱっと考えに浮かぶのは自分が想定していない処理が走ってしまい、消されてしまうロジックになってるとかです。
開示できる範囲でソース出してもらえれば原因を追えるかもしれません。

この回答への補足

補足が遅くなってしまいすいません。
回答ありがとうございます。
htmlファイル
jsファイル
サーバーサイドの順で貼ります。

<html>
<head>
<title></title>
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<script
src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/ …
type="text/javascript"
></script>
<script type="text/javascript" src="../js/testes2.js"></script>

</head>
<body>
<div id="header">
<form>
<input type="text" id ="name" />
<input type="submit" value="送信" id="btn"/>
</form>
</div>
<div id="nav1">
<ul></ul>
</div>
<div id="nav2"></div>
<h2>aa</h2>
<div id="nav3"></div>
</body>
ここまでhtml
<!--
$(function(){
$("form").submit(function(){
search()
});
var search = function(){
$.ajax({
url : "http://localhost/home/ファイル名",
type : "GET",
error : function(){
alert("エラー");
},
success : function(data){
var result = data;
console.log(result);
}
});
};
});
// -->
ここまでjs
<?php
$tes = 'あいう';
echo $tes;
?>

以上です。

ブラウザはIE8とfirefoxでプレビューしてますが同じ結果です。

補足日時:2012/02/14 14:57
    • good
    • 0

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