0

$.getJSON が外部サーバーとの間でデータを送受信する最良の方法であると言われました。JQUERY の Ajax を使用してそのような方法を許可するブラウザーがないことを確認するために、おそらく 7 時間の時間を無駄にしました。Jquery getJSON を使用してデータを送信したいのですが、受信側 (つまり、外部サーバー) として Cakephp を使用しています。

$.getJSON("http://play.mysite.com/usersessions/store/",{ data: "Hi!"});

コールバックは必要ないので、必要ありません。外部サーバーにデータを送信する必要があるだけです。これは MVC サイトなので、usersessions がコントローラーで、store がアクションです。

以下は私のcakephpコードです。それがわからないならそれでいい。getJSONデータを正しく送信しているかどうかを本当に知る必要があります

<?php class UsersessionsController extends AppController {

var $name = 'Usersessions';
var $helpers = array('Html', 'Form','Ajax');
var $components = array('RequestHandler');


function store()
{
   Configure::write('debug', 0);
   $this->autoRender = false;

   if($this->RequestHandler->isAjax()) {
       if ($this->params['url']['data'])
       {
           $this->data['Usersession']['data'] = $this->params['url']['data'];
            $this->Usersession->Save($this->data);
            echo 'Success';
        }   
   }    
}

} ?>

ありがとうございます!

4

2 に答える 2

4

JQuery はJSONPを実装する簡単な方法を提供します。これは、ブラウザでクロスサイト スクリプティング セキュリティ ポリシーを回避するために必要な「ハック」です。要求のクエリ文字列でコールバックを指定する必要があります。また、サーバーによる応答の特別な書式設定も必要です。

リクエストは、次のように実装する必要があります。

$.getJSON("http://play.mysite.com/usersessions/store/?jsoncallback=?",
  { data: "Hi!"}, function(){});
于 2009-11-03T18:07:59.593 に答える
1

getJSON() は、サーバーから JSON データを読み取るためのものです。ブラウザーからサーバーにいくつかのパラメーターを送信するだけの場合は、get() のみを使用し、オプションのコールバックは使用しないでください。

ドキュメントから:

test.php ページをリクエストし、いくつかの追加データを送信します (返された結果は無視します)。

 $.get("test.php", { name: "John", time: "2pm" } );

http://docs.jquery.com/Ajax/jQuery.get#urldatacallbacktype

于 2009-11-03T18:07:46.997 に答える