2014-12-04 3 views
1

В настоящее время я создаю функцию, которая делает запрос POST для приложения. Я правильно настроил строку JSON, но когда я использую отладчик и отслеживаю сетевую активность, я никогда не вижу отправки какого-либо запроса из моего браузера. Вот разбивка моего кода. Мне пришлось сделать некоторые обманки, так как это код PoC, и первоначально он касался страницы jsp.Запрос Ajax не отправляется

$(document).ready(function() { 

    $("#myForm").submit(function(e) { 
    e.preventDefault(); 
    var myJsonObject = new Object(); 
    //set up my object and stringify it into myString 

    sendDataToServer(myString);  
    }); 

    function sendDataToServer(jsonString) { 
    $.ajax({ 
     type: "POST", 
     data: jsonString, 
     contentType: "application/json; charset=utf-8", 
     url: "https://my.target.server.com" 
     dataType : 'json', 
     processdata: true, 
     success: eval("successMessage"), 
     error: eval("failureMessage") 
     }); 
    } 

function successMessage() { 
    alert("Post was successful"); 
    } 

function failureMessage() { 
    alert("Post failed"); 
    } 
}); 

Теперь мой Аякс вызов неудачен (по-прежнему имеет дело с верительными вопросами и сертификатами), но я не могу даже увидеть любой запрос отправляется с самого начала. Является ли мой вызов ajax неправильным, или есть какая-то другая проблема? Если мне отказано в доступе к серверу из-за проблем с сертификатом, не получилось бы это при попытке настроить соединение с сервером перед отправкой любого запроса?

И для дополнительной информации, я вижу предупреждение failMessage(), когда я отправляю свою форму, поэтому я знаю, что она хотя бы вызывает функцию ajax.

+1

** eval is evil. ** Не используйте eval в этом контексте. Используйте закрытие. –

+0

@LorenzMeyer Извините, новичок в вызовах AJAX. Я искал закрытие, и это просто определение функции в параметре успеха? – user3334871

+0

Справа. Просто вызовите функцию. Не оценивайте это. – isherwood

ответ

1

Вы не можете отправлять междоменные запросы AJAX.

Похоже, что «https://my.target.server.com» - это другой домен, чем тот, где работает ваш скрипт. Другие популярные решения: JSONP, iframe или flash. Или использовать ваш задний конец в качестве прокси.

См. this и this. Если целевой сервер также принадлежит вам, вы можете изучить Cross-Origin Resource Sharing.

+0

Узнайте что-нибудь новое, спасибо! Я это попробую. – user3334871

0

Возможно, это связано с перекрестными доменами. По умолчанию установлено значение false. Если url - это другой домен, вам нужно переключить его на true.

В соответствии с JQuery документации

crossDomain (default: false for same-domain requests, true for cross-domain requests) 
Type: Boolean 
If you wish to force a crossDomain request (such as JSONP) on the same domain, set the value of crossDomain to true. This allows, for example, server-side redirection to another domain. (version added: 1.5) 

Надеется, что это будет каким-то помощь Happy Learning :)

0

Смотрите это, чтобы показать, что я имел в виду закрытия. Я также интегрировал ответ, который дали другие.

function sendDataToServer(jsonString) { 
    $.ajax({ 
     type: "POST", 
     data: jsonString, 
     contentType: "application/json; charset=utf-8", 
     url: "https://my.target.server.com" 
     dataType : 'json', 
     processdata: true, 
     crossDomain: true, 
     success: function() {alert("Post was successful")}, 
     error: function(){alert("Post failed")} 
    } 
} 
Смежные вопросы