2013-08-08 4 views
2

У меня есть простой переключатель, который используется для отправки данных в сценарий асинхронно с использованием jQuery .post. При нажатии кнопки сценарий не проходит через строку .post, и ошибки не возвращаются.jquery post не работает и нет ошибки

// this part submits the button click 
    $(document).ready(function() { 
     alert('test 1'); 
     $("input:radio").change(function() { 
      alert('test 2'); 
      $.post('http://google.com/', {'resolution':$(this).val()}, function(data) { 
      alert('test 3'); 
     }); 
     }); 
    }); 

HTML, здесь:

<input type='radio' id='radio1' name='resolution' checked/> 
<input type='radio' id='radio2' name='resolution' /> 

Существует несколько дополнительных CSS используется для довольно до этих кнопок радио (что делает их в тумблер).

Полуосиный пример: here.

Что препятствует работе линии .post? (Я должен увидеть всплывающее окно с «тестом 3»).

+0

Функция обратного вызова будет работать только в том случае, если запрос был успешным. Попробуйте вместо этого использовать $ .ajax() и передайте обратный вызов ошибки. См. Документы для руководств: http://api.jquery.com/jQuery.ajax/ – ninja

+0

Политика одного и того же происхождения предотвращает это: вы не можете выполнить запрос AJAX по доменам. Для этого есть некоторые предостережения, но ничего, что позволит вам очистить данные Google от запроса на стороне клиента. Чтобы доказать это, если вы проверите сетевой трафик со своей скрипки, вы увидите, что запрос возвращается с '405 Method not allowed '. –

+0

Кроме того, вы пытаетесь выбрать '# resolution', но я не вижу элемент с идентификатором' resolution' –

ответ

3

Существует несколько причин, по которым ваш пост Ajax терпит неудачу.

1) Когда я попытался отладить сообщение с помощью Firebug, было очевидно, что Google Search (www.google.com) не принимает данные Post. Возвращается сообщение об ошибке «405 Method not allowed». Вот почему ваш пост не является «успешным». Поэтому я изменил URL-адрес на что-то вроде www.imgur.com или любой другой URL-адрес, который принимает данные post.

2) Чтобы появился ваш «Тест 3», сервер или URL-адрес, который вы отправляете, должны отправить обратно некоторые данные. Если сообщение все еще имеет успех, но сервер отправляет пустой ответ, сообщение предупреждения «Тест 3» не появится. Попробуйте что-то повторить на стороне вашего сервера.

+0

Скрипт живет за брандмауэром, поэтому я не могу использовать точный скрипт. Фактический скрипт отправляется на другую страницу php, которая выводит «Hello World». –

+0

Попробуйте использовать Ajax. '$ .ajax ({ URL: "", данные: {разрешение: $ ('# разрешение') Вал()}, типа:. "Пост", успех: функция (данные) { оповещения («тест 3»); } }); ' –

+0

Нет кубиков. http://jsfiddle.net/nrX36/20/ –

Смежные вопросы