2013-04-29 49 views
1

,我想發佈一些數據,跨域,我想處理這是一個完整的HTML頁面發佈數據跨域和處理我是新來的Jquery響應

我使用下面的響應代碼

$.ajax({ 

    url: "http://www.somehost.com/abc/xyz.php", 
    type: "post", 
    data:{page: "123", calltype: "1"}, 
    // crossDomain: true, I tried with using it as well 
    dataType:'html', 
    success: function(response, textStatus, jqXHR){ 
     console.log(response); 
    }, 
    error: function(jqXHR, textStatus, errorThrown){ 
     console.log("The following error occured: "+textStatus); 
     console.log(jqXHR); 
    }, 
}); 

當我使用dataType:'html'error功能解僱,螢火蟲日誌,

POST http://www.somehost.com/abc/xyz.php 302 Moved Temporarily 231ms 
The following error occured: error 
Object { readyState=0, status=0, statusText="error"} 

但是當我使用dataType:'jsonp',再次error功能解僱,但這次HTML響應成功加載但對此我無法理解和螢火蟲記錄與

FIRE BUG

The following error occured: parsererror 
Object { readyState=4, status=200, statusText="success"} 
SyntaxError: syntax error  
     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//E 

和HTML的響應是正確的一些語法錯誤(因爲我點擊這有點像螢火蟲它開擴的鏈接)本

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<link rel="stylesheet" type="text/css" href="css/style.css"/> 
<title>Welcome</title> 
. 
. 
. 

我想要做這個網站頁面響應了一些工作,我不知道我做錯了請幫幫我。

編輯

檢查@alkis的答覆,我想現在在我的本地使用這個代理頁面後,這我請求服務器需要某種登錄的,其工作的罰款當我打電話交叉域的Ajax調用(加載頁面正常,但有一種解析錯誤,我上面提到),但我不知道它是不是響應完全相同的頁面時,我使用代理,任何幫助?

+0

,讓我們看到了響應報頭幫助你。願意成爲CORS未啓用。 – Ohgodwhy 2013-04-29 19:20:13

+1

看到我的答案http://stackoverflow.com/questions/8944656/what-prevents-me-from-using-ajax-to-load-another-domains-html/8944743#8944743 – 2013-04-29 19:21:50

回答

2

如果你想在性反應的是HTML而不是JSON,那麼你將不得不使用代理這樣

$.ajax({ 
url: 'proxy.php', 
type: 'POST', 
data: { 
    address: 'http://www.somehost.com/abc/xyz.php', 
    page: "123", 
    calltype: "1" 
}, 
xhrFields: { 
    withCredentials: true 
}, 
success: function(response) { 
    console.log(response); 
}, 
error: function(jqXHR, textStatus, errorThrown){ 
    console.log(textStatus); 
    console.log(errorThrown); 
} 
}); 

並與你的服務器端腳本

$postdata = http_build_query(
    array(
     'var1' => $_POST['page'], 
     'var2' => $_POST['calltype'] 
    ) 
); 

$opts = array('http' => 
    array(
     'method' => 'POST', 
     'header' => 'Content-type: application/x-www-form-urlencoded', 
     'content' => $postdata 
    ) 
); 

$context = stream_context_create($opts); 

echo file_get_contents($_POST['address'], false, $context); 

所有你看到的東西在.php文件中是因爲你需要傳遞paremeters頁面和calltype作爲post請求。

的JSONP方法想,如果你想接收HTML

這個答案是大肚Ulmanen AJAX cross domain call 和Pascal MARTIN的混合How to post data in PHP using file_get_contents?

+0

檢查我編輯的問題。 – 2013-04-30 07:54:45

+0

在控制檯上打印成功消息。把一個錯誤回調func也。 – alkis 2013-04-30 08:00:14

+0

chek的代碼。我編輯它。 – alkis 2013-04-30 08:01:41