2012-02-05 6 views
1

今日の以前の記事では、JSONフィードを使用してページ内の要素にデータを入力する方法がわかりました。jquery getjsonのアプローチを理解する

何か新しいことを学ぶために!

JSONデータは、Mysqlデータベースからデータを取得するPHPスクリプトから作成されます。 PHPスクリプトは、getJson呼び出しでPHPスクリプトに渡す必要がある特定のレコードを取得します。

私はGETメソッドとして追加されたパラメータでURLを作成することに成功しましたが、POSTメソッドの例を見つけることができません。パラメータはオプションのパラメータとして使用する必要があります。ここで私がこれまで持っているもの

function loadData(index) { 
     alert(index);//debug 
      $.getJSON('loadJSONholeData.php' , 
       {hole: index} , 
       function(data) { 

...だ私はオプションのようなパラメータを示しTwitterのフィードの例を見つけた:「猫」が、値が変数にあるオプションを見つけることができません。

パラメータを使用する方法がわかりません。どこが間違っていますか。これはおそらく根本的な問題だと思っていますが、私は学びます。

おかげ

更新: を私は以下の回答ごとにコードを改訂し、POSTパラメータを渡すために、両方の提案を使用しますが、受信側のPHPコードは、POSTパラメータを読み取り、単にデフォルトのクエリの値を返していませんしました。

私は静的な値1としても、値としても文字列としても、喜びはありませんでした。私はここに、基本的な何かが欠けている

$hole = 3; 
if (isset($_POST['hole'])) { 
$hole = $_POST['hole']; 
} 

は、ここでPOST値にアクセスし、私の受信PHPコードです。 'index'の値は、デバッグやJSONデータが返されているようにはっきりと存在しますが、デフォルト値です)。私は私のGETメソッドに戻ることができますが、この仕事を見たい!

ありがとうございました

更新:成功!!

改訂されたコードをさらに使いました。コードからコンテンツタイプのパラメータを削除したところ、PHPは正しいクエリを返しています。

私はcontentTypeにJSON型を指定すると、PHPとは別の方法でPOSTパラメータを渡します。これはanptherの方法で期待していますか?以降と上向きに

- 感謝

答えて

4

$ .getJSON()メソッドHTTP POSTはGETしていません。このようなものを試す -

$.ajax({ 
      url: 'loadJSONholeData.php', 
      data: JSON.stringify({hole: index }),   
      type: 'POST', 
      contentType: 'application/json;', 
      dataType: 'json', 
      success: function (result) { 
      //(result.d) has your data. 
      } 
     }); 
+0

私は、更新を追加しました。このアプローチを試みたが、POSTパラメータは、私はPHPコードに慣れていないよ(私はC#のにだ)が、あなたからの値にアクセスしようとしているように見える – Ray

+0

を渡されているように見えるいけませんフォームのポスト値。値はそこにはありません。サーバー側のメソッドには、同じ名前のパラメーター、 'hole'が必要です。次に、パラメーターから値にアクセスします。意味がありますか? C#の相当するコードは 'public static void loadJSONholeData(string hole){// holeはindexの値を持ちます。 } 'の – tempid

+0

ソート - 私は私のポストを更新しました、私がやったことで - - 私はちょうどそれが仕事を得ることに成功しても持って助けてくれてありがとう – Ray

1

引数オブジェクトの各キーと値のペアは、HTTP POSTのパラメータを表します。変数は値として使うことができますが、文字列に変換されると思いますので、変換を自分で行うことをお勧めします(正しい形式であることを確認できます)。簡単な例:

var dynamicValue = foo(); 
$.post('my/url', { var1:"static value", var2:dynamicValue }, function(data) { 
    // Your callback; the format of "data" will depend on the 4th parameter to post... 
}, "json"); // ...in this case, json 

さて、場合にあなたのサーバがJSONエンコードされたオブジェクト/リストを期待している、あなたはJSON.stringifyを使用して、それを渡すことができます:

function foo() { 
    return JSON.stringify({ my:"object" }); 
} 

JSONは、最も近代的なブラウザで利用可能であるべきですそうでない場合は、here(json2.js、 "JavaScript"の下に)を入手できます。