2010-06-25 67 views
0

好的,我不是100%確定我在這裏做錯了什麼。也許我只需要第二雙眼睛來揭示我的方式錯誤。我送使用jQuery從一個域(https://customerhub.net)PHP腳本在我的域(https://dankennedy.com)JSONP請求並獲得來自該腳本的響應。我知道請求正在工作,因爲出於測試目的,我在發送響應之前將所有輸入打印到文件,並且數據正在通過。但是,無論出於何種原因,回調函數都不起作用。與JSONP請求相關的問題

這裏是jQuery代碼:

jQuery('#form1').validationEngine({ 
failure: false, 
success: function(){ 
    var url = 'https://dankennedy.com/test2.php?jsoncallback=?'; 
    jQuery.getJSON(url, jQuery('#form1').serialize(), function(){ 
    alert('I ran... for once'); 
    }); 

    return false; 
} 
}); 

這裏是PHP代碼:

$callback = $_REQUEST['jsoncallback']; 

$myFile = "info.txt"; 
$fh = fopen($myFile, 'w') or die("can't open file"); 

$data = ''; 
foreach($_REQUEST as $key => $value) 
$data .= ", `".$key."` = \"".$value."\""; 

$stringData = 'Array: ' . substr($data, 1); 

fwrite($fh, $stringData); 

$response = array('msg' => 'SUCCESS'); 

$fullResponse = $callback.'('.json_encode($response).')'; 

fwrite($fh, "\n".$fullResponse); 

fclose($fh); 

header('Content-type: text/plain'); 
echo $fullResponse; 

最後,我將與代碼做多,並有我的PHP腳本訪問我的數據庫,並傳回了一些有意義的數據並讓我的jQuery函數對這些數據做一些處理。現在,我只是打印出來並從小處着手,以確保通過JSONP交換信息的工作正常。

一切看起來都不錯。我正在關注Firebug中的代碼,看看代碼是如何處理的。正在創建請求,但內部的警報聲明未運行。

這已經寫了該文件被打印出來:

Array 5: `jsoncallback` = "jsonp1277479829087", `id` = "", `type` = "blog", `task` = "add", `title` = "Brace Ford", `date` = "June 25, 2010 11:30 AM", `author` = "", `teaser` = "Teaser", `body` = "Body", `download` = "", `comments` = "", `__utma` = "119149980.718135870.1277328038.1277328038.1277386321.2", `__utmz` = "119149980.1277328038.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)", `SESS6c0bc6ae4aee7e8c564bc45425742fc0` = "tpc7lmtv551kg1vpuvo2c9efi1", `__utmv` = "119149980.authenticated user,s1a", `mifge` = "DKFrontPage", `__utmc` = "119149980" 
jsonp1277479829087({"msg":"SUCCESS"}) 

任何想法,我的嚴重錯誤是什麼?

+0

您可能必須使用'jQuery.ajax()'和建設有所有已註冊的可用回調的呼叫一些運氣,又看見一個(或多個)被調用。 (換句話說,將它作爲不帶JSONP回調的常規ajax請求來嘗試。) – Charles 2010-06-25 16:52:11

+0

嘗試使用不同的回調函數並不是一個壞主意。不過,我仍然需要使用JSONP回調函數,因爲具有普通回調函數的jQuery.ajax()不適用於不同的域。請求頁面位於gkic.customerhub.net,我的php頁面位於dankennedy.com。仍嘗試不同的回調可能工作。感謝您的建議。 – 2010-06-30 14:20:06

回答

0

我想通了什麼問題了。無論出於何種原因,我應該使用的回調是「JSONcallback」而不是「jsoncallback」。鑑於Charles的想法和我在另一個論壇上發現的關於「JSON」資本化的建議,我想我會試一試。像魅力一樣工作。謝謝你們的幫助!

0

您將無法調試的Firebug的getJSON成功函數的代碼,但是這預期。你應該看到什麼(如果你看看FireBug中的源代碼)是在html頭部注入的腳本標記。這是否正確? 並嘗試這樣做,看看是否反應獲得通過 - 返回一個字符串,如從服務器「警報(‘測試’)」:

$fullResponse = 'alert("test")'; 
echo $fullResponse; 

是否警報火?

+0

是的,我不認爲Firebug會在堆棧中顯示很多內容,但它至少會讓我追蹤代碼的進展,讓我知道它試圖進入「成功」的功能。 可以試試。從php腳本發送「alert('test')」到請求頁面會顯示出來嗎?我不需要對它進行編碼JSON格式,如.. $回調「(‘警報(‘測試’);’)」。 我可以試試看。感謝您的建議! – 2010-06-30 14:26:42

+0

很好,你已經解決了,恭喜!快速回復您的意見。alert('test')的原因;應該觸發的是,實際發生的是一個

  • 11. JSONP請求與jQuery的外部域
  • 12. 問題與Alamofire請求
  • 13. 問題請求HTTPS與TCL
  • 14. 與bitbucket拉請求問題
  • 15. javascript jsonp url請求
  • 16. sencha touch jsonp請求
  • 17. 同步JSONP請求
  • 18. JSONP請求發出
  • 19. 解析來自Twitter api的jsonP請求的輕微問題
  • 20. 與@property相關的問題
  • 21. 與IndexOutOfRangeException相關的問題
  • 22. 與UIButton相關的問題
  • 23. 與UITextView相關的問題
  • 24. 與NSURLConnection相關的問題
  • 25. 與jquery相關的問題
  • 26. 與UNUserNotificationSettings相關的問題
  • 27. 與JComboBox相關的問題
  • 28. 與app_controller相關的問題
  • 29. 與GoToStateAction相關的問題
  • 30. 與UITabelViewCell相關的問題