2015-12-02 3 views
-1

Я должен сгореть АЯКС вызов против двух различных доменов на основе платформы клиента (мобильный/настольный):Jquery Ajax URL 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' уже рассчитан. Вам не нужно 'eval()' на нем. Juste использовать 'url: baseDomain + '/ data/call.aspx/AddToShoppingCart'' (не пропустить запятую', 'после него) – pistou

+0

Есть ли какая-то особая причина, по которой вы выберете * second *, из двух одинаковых ответов, как ваш правильный ответ? Такой этикет должен принять первый правильный ответ (наведите «ответные» даты, чтобы получить точную дату/время). –

ответ

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, это просто строка, таким образом, создать строку, которую вы хотите в переменную и присвоить его url свойство вариантов Ajax:

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 :)