好的,我不是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"})
任何想法,我的嚴重錯誤是什麼?
您可能必須使用'jQuery.ajax()'和建設有所有已註冊的可用回調的呼叫一些運氣,又看見一個(或多個)被調用。 (換句話說,將它作爲不帶JSONP回調的常規ajax請求來嘗試。) – Charles 2010-06-25 16:52:11
嘗試使用不同的回調函數並不是一個壞主意。不過,我仍然需要使用JSONP回調函數,因爲具有普通回調函數的jQuery.ajax()不適用於不同的域。請求頁面位於gkic.customerhub.net,我的php頁面位於dankennedy.com。仍嘗試不同的回調可能工作。感謝您的建議。 – 2010-06-30 14:20:06