AJAX JSONP запрос - нет ответа - PullRequest
0 голосов
/ 19 августа 2011

Прежде всего, любите этот ресурс - используйте его и учитесь уже пару лет.Это мой первый пост, так как я действительно застрял.Я отправляю форму через ajax / jsonp.Если я запускаю этот скрипт локально - я получаю ответ от домена с кодом успеха.Если я просто запускаю запрос в браузере, он возвращает мне ответ с кодом успеха.Но когда я отправляю свою форму - Firebug выдает мне 200 OK в RED без ответа от сервера.Safari дает мне не удалось загрузить ресурс: отменено.Не могу найти много документации об ошибках, поэтому я остановился.Я знаю, что это, наверное, ужасно отвратительно для профессионалов читать, но это мой первый пост, поэтому любые рекомендации приветствуются!В сети есть два примера: http://www.yourlifeportal.com/register.php, которая имеет версию с reCaptcha.http://www.yourlifeportal.com/registerNew.php не имеет reCaptcha, только добавление капчи повлияло на мой код.Если мне просто нужно ударить по лицу, дайте мне знать это тоже.Спасибо!

$.ajax({
        url: 'http://myURLonaDifferentDomain',
        data:jQuery(frm).serialize(),
        type: 'POST',
        dataType: 'jsonp',
        jsonp: 'jsonp',
        crossDomain: true,
        error: function (xmlHttpRequest, textStatus, errorThrown) {
                    if(xmlHttpRequest.readyState == 0 || xmlHttpRequest.status == 0) 
          return;  // it's not really an error
     else
                alert(xmlHttpRequest + ': ' + textStatus + ': ' + errorThrown);
                    },
        success: function(jsonp) { 
            // Response handling code goes here
            console.log(json.response.responseCode + ': ' + json.response.response + ': ' + json.response.responseDescription);

            if (json.response.responseCode == 10527) { 
            document.getElementById('errorScreen').style.display='block';
            $('#errorMsg').append('There was an error with your credit card transaction please go back and re-check your ');

            } 
                    if (json.response.responseDescription == "Registration was successful") {

            window.location.replace("http://www.url.com/thankyou.php");             
            } 

        }
                        });


}

Ответы [ 2 ]

0 голосов
/ 06 июня 2012

У меня была похожая проблема, и решение состояло в том, что ответы JSONP должны быть включены в функцию обратного вызова.Ответ здесь: https://stackoverflow.com/a/10892749/498903

0 голосов
/ 19 августа 2011

Хахаха.Междоменный сценарий.Это большая проблема.Прочитайте о решении здесь .

РЕДАКТИРОВАТЬ Я перечитал вопрос и заметил, что у вас уже есть AJAX, готовый для междоменной работы (хотя обычно это замечаетсам);проблема почти наверняка в том, что у вас нет готового удаленного веб-сервера.Используйте Firebug, откройте вкладку Net и посмотрите заголовки Response для характерных заголовков CORS.

...