我是JavaScript新手,我有一個問題讓我苦不堪言。WCF javascript調用跨域
我想在頁面中放入一個跟蹤javascript。該腳本將調用wcf服務來跟蹤客戶端瀏覽器信息,頁面訪問時間和時間戳。問題是我得到:JavaScript調用時出現「405方法不允許」錯誤。該服務將在另一個域上。現在我在localhost上測試這個。該服務工作正常,因爲我可以從瀏覽器中的新頁面調用它。你遇到過同樣的問題嗎?我怎樣才能解決這個問題?
我的JavaScript代碼是:
WCF服務代碼:
[ServiceContract(Name = "CustomersAssistantService", Namespace = "CustomersAssistantService")]
public interface ICustomersAssistantService
{
[OperationContract]
[WebGet]
string DoWork();
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
[OperationContract]
string Sum(int n1, int n2);
}
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class CustomersAssistantService : ICustomersAssistantService
{
public string DoWork()
{
return "work done";
}
public string Sum(int n1, int n2)
{
return (n1 + n2).ToString();
}
}
JavaScript調用:
function CallWcf1(){
var _I = this;
var url = "http://localhost:58399/CustomersAssistantService.svc/customersAssistantService/";
var methodUrl = _I.serviceUrl + 'dowork';
$.ajax({
url: methodUrl,
data: '',
type: "GET",
processData: false,
contentType: "application/json",
timeout: 10000,
dataType: "text", // not "json" we'll parse
success:
function(res)
{
if (!callback) return;
// *** Use json library so we can fix up MS AJAX dates
var result = JSON2.parse(res);
// *** Bare message IS result
if (bare)
{ callback(result); return; }
// *** Wrapped message contains top level object node
// *** strip it off
for(var property in result)
{
callback(result[property]);
break;
}
},
error:
function(xhr)
{
if (!error) return;
if (xhr.responseText)
{
var err = JSON2.parse(xhr.responseText);
if (err)
error(err);
else
error({ Message: "Unknown server error." })
}
return;
}
});
}
難道我做錯了什麼?
非常感謝,拉杜d
你知道Google跟蹤代碼的工作原理嗎?我假設它打電話給一個服務來跟蹤信息。 – 2011-05-04 08:24:45
@Radu:我剛剛添加了一些要點,以便你如何處理這個問題。 Google使用第三個('script'元素)。 – 2011-05-04 08:26:05
非常感謝。你救了我的一天:) – 2011-05-04 11:13:36