我已經嘗試了無數的代碼排列,離成功最近的是關於「同源策略」的警告,或者我反彈到了登錄頁面,在使用CodeIgniter編寫的應用程序的頁面中。JavaScript:「同源策略」失敗
爲了保持這種明智的,對domain-one.com起見,我使用的是:
(function($) {
var url = 'http://domain-two.com/get_data?callback=?';
$.ajax({
type: 'GET',
url: url,
async: false,
contentType: "application/json",
dataType: 'jsonp',
success: function(json) {
console.log(json);
},
error: function(e) {
console.log(e.message);
}
});
})(jQuery);
在上domain-two.com PHP中,我使用的是:
public function get_data() {
$results = $this->model->method();
if (count(results)>0):
foreach (results as $array):
$array['index'] = $array['value'];
$array[] = $array_result;
endforeach;
header('content-type: application/json; charset=utf-8');
header("access-control-allow-origin: *");
$json = json_encode($array);
# JSON if no callback
if(! $this->input->get('callback')):
exit($json);
endif;
# JSONP if valid callback
if(is_valid_callback($this->input->get('callback'))):
exit($this->input->get('callback') . "(" . $json . ")");
endif;
else:
return false;
endif;
}
在這一點上,值得一提的是,當我訪問PHP方法的鏈接時,它給了我所需要的數據。但是,如果我通過包含JavaScript的網頁執行此操作,它不會(「同源策略」錯誤,或者我退回到登錄頁面)。
有關我如何使用回調的幫助充其量只是不足(某些人建議使用實際的回調函數,其他人聲稱不需要此類函數)。
在這5天后,我不知道我的意思是在做什麼,因爲有很多不同的技術,這些技術似乎都不適合我。
任何意見將非常歡迎!
你的PHP'反彈到page'聽起來像是你應該認證標誌,但我沒有看到的是,在你的代碼的證據?另外,您應該避免使用'async:false',因爲它已被棄用。還有其他方法可以確保您等待ajax調用完成,如承諾。 –
不,該控制器中沒有驗證碼。我認爲回調會導致CodeIgniter出現問題,並且可能會剝離該方法的URL參數。 如果有'async'的替代品,現在是分享的好時機。 –
使用[promises](http://www.htmlgoodies.com/beyond/javascript/making-promises-with-jquery-deferred.html)。 –