2015-05-02 39 views
3

我想從我的服務器登錄到另一臺服務器到我的其他網站。 但每次都會出現這個錯誤。Ajax錯誤:SyntaxError:預期的表達式,得到'<'

SyntaxError: expected expression, got '<' 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//E 

請幫忙。

url = "http://www.example.co.uk/email/admin/index.php?Page=&Action=Login"; 
//  console.log(url); 
//  return false; 
     postData = {ss_username:"username",ss_password:"password",Action:"login"} 
     $.ajax({ //update page and redirect 
      type: 'POST', 
      url: url, 
//   crossDomain: true, 
      dataType: "jsonp", 
      data: postData, 
      success: function (response) { 
      console.log(response); 

      }, 
      error: function (response) { 
      console.info(response); 
      } 
     }); 

回答

1

JSONP基本上是wrapping things in a script tag,使一個跨站點請求允許(因爲腳本標籤不具有相同的侷限性AJAX一樣)。

您的頁面返回HTML(我打賭<是HTML標記的一部分),它作爲JavaScript對象無效。

而是使用CORS以允許和明智的方式執行安全且更明智的跨站腳本。

注意:始終使用HTTPS而不是HTTP(否則人們可以使用MITM),並且JSONP請求(被腳本標記注入)總是GET。

+0

它的工作原理,非常感謝... :) –

+0

@ YousafQ請參閱http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work –

0

無論你的其他服務器遇到一個錯誤(這樣的反應是錯誤的HTML頁面),或者你將不得不從'jsonp'阿賈克斯類型更改爲'xml'