2015-12-02 77 views
-1

我不得不解僱基於客戶端的平臺上對兩個不同的域調用Ajax(移動/桌面):jQuery的AJAX網址EVAL

var baseDomain = (isMobile()) ? "http://m.test.com" : "http://www.test.com"; 

function AddProduct(ProductId, ButtonClientId) { 
    $.ajax({ 
     type : "POST", 
     eval("url : \""+baseDomain+"/data/call.aspx/AddToShoppingCart\","); 
     contentType : "application/json; charset=utf-8", 
     data : '{productId:' + ProductId + ', quantity: 1, isSingle: true}', 
     dataType : "json", 
     success : function(data) { 
      ProductAddedSuccess(data.d, ButtonClientId); 
     }, 
     error : ProductAddedError 
    }); 
} 

我不能去通過這個,因爲我總是得到「的SyntaxError :缺少形式參數「。我錯在哪裏?

+3

爲什麼'eval'?沒有什麼需要動態評估。 – Stryner

+0

'baseDomain'已被計算。您不需要在其上「評估()」。 Juste使用'url:baseDomain +'/ data/call.aspx/AddToShoppingCart''(不要錯過逗號','後面的) – pistou

+0

是否有任何特殊的原因,您選擇* second * posted,有兩個相同的答案,作爲你的正確答案? SO禮儀是接受第一個正確的答案(懸停「回答」日期以獲得確切的日期/時間)。 –

回答

1

試試這個:

$.ajax({ 
    type : "POST", 
    url : baseDomain + "/data/call.aspx/AddToShoppingCart", 
    contentType : "application/json; charset=utf-8", 
    data : '{productId:' + ProductId + ', quantity: 1, isSingle: true}', 
    dataType : "json", 
    success : function(data) { 
     ProductAddedSuccess(data.d, ButtonClientId); 
    }, 
    error : ProductAddedError 
}); 
+0

在發佈完全相同的答案之前,請檢查是否已經提供了答案的副本。謝謝 :) –

1

的網址只是一個字符串,所以在一個變量創建所需的字符串,並將其分配到的阿賈克斯選項url屬性:

var baseDomain = isMobile() ? "http://m.test.com" : "http://www.test.com"; 

function AddProduct(ProductId, ButtonClientId) { 
    $.ajax({ 
     type : "POST", 
     url: baseDomain + "/data/call.aspx/AddToShoppingCart", 
     contentType : "application/json; charset=utf-8", 
     data : '{productId:' + ProductId + ', quantity: 1, isSingle: true}', 
     dataType : "json", 
     success : function(data) { 
      ProductAddedSuccess(data.d, ButtonClientId); 
     }, 
     error : ProductAddedError 
    }); 
} 

的原因錯誤你把一個函數在匿名對象聲明的中間調用(到eval())!

例如

{ 
    propName1: "Value 1", 
    someFunctionCall(), 
    propName2: "Value 3" 
} 

這是沒有意義的爲Javascript :)