2009-11-03 98 views
0

我被告知$ .getJSON是發送數據到外部服務器和從外部服務器發送數據的最佳方式。我可能浪費了7個小時的時間試圖使用JQUERY的Ajax來做這件事,只是爲了發現沒有瀏覽器允許這種類型的方法。我想使用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'; 
     } 
    }  
} 

} ?>

謝謝你!

+0

是否有一個quetion比「戴上這個權利」等? – 2009-11-03 18:04:40

+0

如果有效,那很好。 – 2009-11-03 18:06:09

+0

大概上面的代碼不工作? – 2009-11-03 18:06:15

回答

1

getJSON()用於從服務器讀取JSON數據。如果你只是想從瀏覽器發送一些參數到服務器,只需使用get()並且不要使用可選的回調函數。

從文檔:

請求的頁面test.php的,並沿(同時還忽略返回結果)發送一些額外的數據。

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

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

+0

他需要從域外的外部URL請求,因此$ .ajax不是一個選項。 – 2009-11-03 19:06:36

4

jQuery提供實現JSONP,這是一種簡單的方法一個必要的「黑客」來解決跨站腳本安全政策的瀏覽器。在請求的查詢字符串中指定回調是必需的,以及服務器響應的一些特殊格式。

你的要求將需要的方式來實現這樣的:

$.getJSON("http://play.mysite.com/usersessions/store/?jsoncallback=?", 
    { data: "Hi!"}, function(){}); 
+0

非常感謝你們。我認爲這是我需要的。儘管$ .Post聽起來像我正在尋找的東西。我認爲發送到外部服務器的唯一方法是使用這種特定的技術。 – numerical25 2009-11-04 00:21:25

+1

只是爲了強調'jsoncallback =?'的使用附加到外部URL,這是強制性的工作。 ;) – 2009-11-18 04:16:56