2015-11-09 9 views
5

私はamazon Webサービスの新しいユーザーです。最近、私はアマゾンのラムダサーバーを勉強していると私は(この例以下:http://docs.aws.amazon.com/apigateway/latest/developerguide/getting-started.html):以下のように小さなNode.jsのコードを持ってamazon lambda node.js関数に過去のデータにajax GETまたはPOSTメソッドを使用する方法

console.log('Loading event'); 

exports.handler = function(event, context) { 
var name = (event.name === undefined ? 'No-Name' : event.name); 
context.done(null, {"Hello":name}); // SUCCESS with message 
}; 

しかし、私は「名前」を渡すためにjqueryのAjaxのメソッドを使用する方法がわかりませんパラメータをそのコードに追加します。また、私は使用するときに動作します:

curl -H "Content-Type: application/json" -X POST -d "{\"name\": \"PeterChan\"}" https://my-api-id.execute-api.region-id.amazonaws.com/test/mydemoresource 

を、私は結果を得ることができます:{「こんにちは」:「ユーザー」}

が、どのように私は過去の「名前」変数にjqueryのアヤックスのメソッドを使用できますか?

私が書いたAjaxコード:

var data = {"name":"bbbb"}; 

$.ajax({ 
     type: "POST", 
     dataType: "json", 
     url:"https://my-api-id.execute-api.region-id.amazonaws.com/test/mydemoresource", 
     data: data, 
     //processData: false, 
     success: function(data) { 
      var text=JSON.stringify(data); 
      alert(text); 
      //console.log(data); 

     },error: function(data) { 
      alert("err"); 
     } 
}); 

また、私はそれを実行し、警告ERR。喜んで助けてください。

は〜

+1

このURL https://my-api-id.execute-api.region-id.amazonaws.com/test/mydemoresourceは利用できません。 –

+1

はいSuchit、これは単なるリンク例ですが、実際には私自身のAPI URLを使用しています。 Thx – TimLee

+0

あなたのurlがサーバー関連のエラーを出さないことを確認する必要があります。 –

答えて

4

ありがとうですから、問題のカップルを持っている可能性があるように見えます。 1つは、変数名として "name"を使用しないでください。 2つは、データが正しく解析されていない可能性があります。あなたがそれを送信するときにこれにはJSON.stringifyを必要とする(ええ、あなたはすでにJSONを持っているが、それは気難しいです):

$.ajax({ 
    url: 'https://mylambdafunctionurl/', 
    type: 'POST', 
    crossDomain: true, 
    contentType: 'application/json', 
    data: JSON.stringify(data), 
    dataType: 'json', 
    success: function(data) { 
     //success stuff. data here is the response, not your original data 
    }, 
    error: function(xhr, ajaxOptions, thrownError) { 
     //error handling stuff 
    } 
}); 

私もクロスドメイン追加しました:真、とcontentType:「アプリケーション/ JSONを」。

渡されたJSONでキー/値を取得するラムダ関数では、event.whateverkeyを使用します(ラムダコンソールでテストイベントを使用すると、問題を避けるためにキーを送信したものと一致させます) 。あなたのAJAX機能であなたの成功コールバックで

データはバックラムダ関数から来るものであるので、私は確実にするラムダ関数ではなく、成功にそれが正しく送信されることをJSON.stringifyingをお勧めします。

context.done(null, JSON.stringify({"Hello":name})); 
+0

ありがとうございますKatharine Osborne〜私のコードに "JSON.stringify(data)"を追加した後で動作します〜もう一つ、GETメソッドでどうやってやればいいか質問したいと思います。結果を得るためにブラウザの "https://my-api-id.execute-api.region-id.amazonaws.com/test/mydemoresource?name=peter"にアクセスしてください。私はGETメソッドを行うためにAPIゲートウェイを設定する方法を知らない...ありがとう、私の貧しい英国のために申し訳ありません〜 – TimLee

+0

コメントにコードを表示することはできませんが、GETを使用する別のラムダ関数を作成する必要があります。あなたのajax呼び出しでは、データを渡す必要はありません(contentType、data、またはdataTypeは必要ありません。型は 'GET'です)。 –

関連する問題