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

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

ただいまの
回答率

90.32%

AjaxでデータをPHPに飛ばしたが、[object][Object]と表示される 

解決済

回答 2

投稿

  • 評価
  • クリップ 2
  • VIEW 5,185

mulberryfields

score 775

Ajaxで、データをPHPに飛ばしてechoすると、alertでそのデータが表示されるようにしたい(下記の例では、「100」)のですが、
[object][Object]
と表示されます。
おそらくかなり基礎的なミスがあるのだと思うのですが、なかなか解決できないので、質問させていただきます。

function ajax_func(){
    function getXMLHttpRequestObject(){
        var ajax = null;
        if (window.XMLHttpRequest){
            ajax = new XMLHttpRequest();
        } else if (window.ActiveXObject){    
            ajax = new ActiveXObject('MSXML2.XMLHTTP.3.0');
        }
        return ajax;
    }
    
    var senddata ={
        "aaa" : 100
    };
    $.ajax({
        type: "POST",
        url: "http://....php",
        data: senddata,
        success: function(msg){
            alert(data) ;
        },
        error: function(XMLHttpRequest, textStatus, errorThrown){
            alert(errorThrown);
        }        
    })
    return false;
}
echo $_POST['aaa'] 

どこに誤りがあるでしょうか。
お分かりの方、お手数をお掛けしますが、ご教示頂ければ幸いです。
よろしくお願いいたします。
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

コールバックのスコープでdataは参照できるのかな?

とりあえず

success: function(msg){
    alert(data) ;
},

success: function(msg){
    alert(msg) ;
},

かと。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/02/15 21:31

    ありがとうございました。
    success: function(senddata){
    alert(senddata) ;
    }
    としたら、できました。
    var senddata としたので、ここにいれる変数は統一しなければならないのですね。
    そこを理解しないまま、様々なサイトを参考に記述していたので、誤っていました。

    キャンセル

  • 2015/02/16 23:41

    解決できたようで幸いです。
    ですが、コメントを拝見する限りちょっと勘違いをなさっているようなので補足します。

    まず、ajax関数の各パラメタの意味ですが、
    「dataというデータをもとにtypeという形式でデータを送り、urlの相手に処理を依頼する。処理がうまくいった時にはsuccessを、うまくいかなかったときにはerrorを呼んでもらう。」みたいなイメージです。

    ここで、渡すデータと、成功時の関数の引数は全く別のオブジェクトです。
    つまり、渡した箱に値を入れて返してくれるわけではないです。

    ですので、コールバック関数の引数名は基本的には何でも構わないですが、
    他で利用している名前を使うのはおすすめできません。

    キャンセル

  • 2015/02/17 11:33

    補足頂き、ありがとうございました。
    ajax関数のパラメーターの意味がよく分かりました。

    キャンセル

+1

alert() は文字列や数字以外のデータを渡すと [ogject] のように表示されてしまいます。

web  ブラウザの 開発用ツールで、
  alert(data) 文の部分で ブレークさせて、data の内容を確認する
事はできますか?
chrome や firefox での
data の内容がわかれば、alert() に渡す文字列を作ることができるとおもいます。

参考:
- Web開発でよく使う、特に使えるChromeデベロッパー・ツールの機能 http://www.buildinsider.net/web/chromedevtools/01
- Firefoxの開発ツール入門 http://html5experts.jp/chikoski/6671/

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/02/15 21:32

    ご回答いただき、ありがとうございました。
    開発用ツールのリンク先が大変分かりやすそうなので、これで勉強します。

    キャンセル

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

  • ただいまの回答率 90.32%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る