2011-01-06 8 views
0

私は、サーバーからデータを取得するサイト(名前、オートコンプリートスクリプトを使用)を作成し、それをすべて収集してから、サブミットして、サーバーに収集されたデータを送信してJSON文字列を取得しますページの使用量がさらに減少します。GETアクションをシミュレートしてリロードせずに同じページに渡す方法は?

しかし、上記サーバーには最後の部分がなく、シミュレーションする必要があります。しかし、私はどのように考えていない。

HTML、JS、jQueryおよびを使用しない else。

だから

構造があるとして、という質問には、どのように私は

終わるためにfooとbarを提出する時に値を持つことになります

<form action="Search" method="get"> 
<input type="hidden" name="foo"/> 
<input type="hidden" name="bar"/> 
<input id="submitButton" type="submit" value="Search"/> 
</form> 

を得るのですかfoo、bar、ランダムデータを含むJSONオブジェクトとして、私が作成したばかりの.jsの

.jsを押して、ページを再読み込みせずに。 (すなわち、プレゼンテーションを押すだけでスクリプトにキックが行われ、それにフォームデータが与えられますが、それ以外は何もありません)

編集:サーバーは動作するときにGETにJSONで応答します。

$("form").submit(function (event) { 
    event.preventDefault(); 

    // NOTE: the following would work when the server is ready 
    //$.getJSON("http://whatever.com/endpoint.php", $(this).serialize(), function(data) { 
    // console.log(data); 
    //}); 

    var fakeData = { 
    whatever: "data", 
    you: "need", 
    foo: "value", 
    bar: "value" 
    }; 
    console.log(fakeData); 

}); 

あなたが(にconsole.logを見て開い放火犯を持っていることを確認してください):

+0

「サーバーに最後の部分がない」とはどういう意味ですか?サーバーはPOST要求を受け入れ、JSONで応答しますか?そうでない場合は、どの形式で応答しますか? –

+2

私が問題を正しく理解していれば、アプリケーションは部分的にしか完了していないという点があります。OPは、サーバのサイドピースをまだ準備していない状態でクライアントサイドピースを書いています。 –

+0

JacobMは正しいはい – Mantar

答えて

1

入れ:

$(function(){ 
    var handleNewData = function(data){ 
     alert('I got:\nfoo:'+data.foo+'\nbar:'+data.bar+'\nresults:'+data.results); 
    }; 
    var reallySubmit = false; 
    $('form').submit(function(evt){ 
     if (reallySubmit){ 
      $.get(this.action,$(this).serialize(),handleNewData,'json'); 
     }else{ 
      // Put whatever spoof data you want here. 
      var returnedData = { 
       foo:this.elements.foo.value, 
       bar:this.elements.bar.value, 
       results:["jim", "jam", "jamboree"] 
      }; 
      handleNewData(returnedData); 
      return evt.preventDefault(); 
     } 
    }); 
}); 

ここで働くの例を参照してください:http://jsfiddle.net/sQtkY/4/

編集:申し訳ありませんが、私はjQueryのは、適切に解析することを忘れてしまいましたパラメータを渡すとJSONの文字列が表示されます。これを表示する答えを更新しました。あなたのスプーフィング値はstringifyにする必要はありません。

編集2:もう一度更新して、フォームの値となりすましのデータを含める方法を示します。

+0

満足していますが、jsonを渡すだけでなく、偽のデータを追加する必要があります。 – Mantar

+0

@Mekeこれを表示するための回答を更新しました。 – Phrogz

+0

さて、 "foo"、 "bar"、 "jim"と表示されます。私の要点は、入力データと偽データを* one *オブジェクトに入れてください。 – Mantar

0

この

$("form").submit(function(event){ 
event.preventDefault(); 
$.post("http://whatever.com/post.php",$(this).serialize(), function(data){ 
alert(data); 
}); 
}); 
+1

jsonフォーマットのデータ( "{foo:blah、bar:blahblah}"ではなく)でクエリーストリング形式のデータ( "foo = blah&bar = blahblah")を作成する必要があります。 –

+0

それを試してみてください。それは何もしません。 – Mantar

1

はこれを試してみてください試してみてください。 JSの配列は/オブジェクトを使用すると、returnedDataに戻ってサーバから期待し何でも

+0

そしてどうやってfooとbarをvarに入れるのですか? – Mantar

+0

edit:added foo and bar –

+0

これはfooとbarを "value"に設定し、入力からの実際の値ではありません – Mantar