2014-04-28 33 views
0

我有一個AJAX調用一個PHP(在不同的域)登錄腳本,它看起來如下所示:「資源解釋爲腳本,但使用MIME類型text/html」轉移響應

var request = $.ajax({ 
     crossDomain: true, 
     url: "http://www.domain.com/PHP/fct.login.php", 
     type: "POST", 
     data: $('#loginForm').serialize(), 
     dataType: "jsonp", 
     contentType: "application/json; charset=utf-8", 
    }); 

而且在我的PHP腳本中,我有以下內容:

<?php 
header('Content-Type: text/javascript'); 
echo $_GET['callback'] . '(' . "{'status' : '1'}" . "{'text' : 'ok'}" . "{'userid' : $member['user_id']}" . ')'; 
?> 

但它不起作用。在我的控制檯我只是得到一個Resource interpreted as Script but transferred with MIME type text/html消息...

編輯:我更新了我的回答爲「費利克斯克林」之稱,但現在我得到解析錯誤。

我更新的響應是這樣的:

echo $_GET['callback'] . "({status : 1},{text : 'ok'},{userid : ".$member['user_id']."})"; 

和錯誤的樣子:

Error: Parse error on line 1: 
{status : 1},{text : 
-^ 
Expecting 'STRING', '}' 

編輯2:沒關係,現在它工作(與更新的響應)。當我通過瀏覽器直接查看php腳本(沒有ajax調用等)時,我得到了parse error

+0

你不檢索JavaScript。刪除'header'聲明。 – Ohgodwhy

+2

@Ohgodwhy:當然,迴應是JavaScript。 –

+0

@FelixKling你會怎麼說? – Ohgodwhy

回答

1

您生成的JS代碼不正確。它看起來像

callbackName({'status': '1'}{'text' : 'ok}) 

但你不能把對象字面值放在彼此之後。

要麼你必須生成一個文本:

callback({status: 1, text: 'ok'}) 

或多個參數,以逗號分隔:

callback({status: 1}, {text: 'ok'}) 

雖然我覺得jQuery的希望只有一個參數傳遞給回調。

相關問題