Ajax не публикует данные, расширение Chrome - PullRequest
1 голос
/ 10 января 2011

В моем расширении Chrome я могу получить доступ к файлу 'punch.php' и получить данные обратно, проблема в том, что я не могу передать данные в файл.Вот мой код:

jQuery.fn.punch = function(){
    $(this).click(function(){
        var punchBtn = $(this);
        var ProjectMemberId = '1'
        var ProjectId = '1'
        var str = 'ProjectMemberId='+ProjectMemberId+'&ProjectId='+ProjectId;

        var xhr = new XMLHttpRequest();
        xhr.open("POST", "http://www.ontimepunchcard.com/scripts/punch.php", true);
        xhr.onreadystatechange = function() {
          if (xhr.readyState == 4) {
              $('#PunchBox').html(xhr.responseText);
              if(xhr.responseText==0)
              {
                  punchBtn.removeClass('PunchedIn');
              }
              else
              {
                  punchBtn.addClass('PunchedIn');
              }
          }
        }
    xhr.send('ProjectMemberId='+ProjectMemberId+'&ProjectId='+ProjectId);
    });
}//END PUNCH METHOD

Это дублирование обычного веб-приложения со всем одним и тем же кодом.Сообщение идентификатора в punch.php является частью инструкции SQL.Оператор не выполнялся с расширением Chrome и возвращал оператор ошибки, поэтому я начал выводить фактический запрос SQL, чтобы увидеть, что он пытается сделать.Результатом стал SQL-запрос с двумя пропущенными идентификаторами, отсюда ошибка и неудачный запрос.

Есть ли здесь синтаксическая проблема?Возможно ли, что, хотя у меня есть права доступа, заданные так, как мне говорит Google, мое расширение может только получать данные, а не отправлять?Есть ли здесь какая-то другая глупость?

Ответы [ 2 ]

2 голосов
/ 14 февраля 2011

«Вы уверены, что у вас есть соответствующие разрешения в ваших расширениях для публикации данных в этот файл? Я только что сделал простой фрагмент, который я возвращаю« 1 »из responseText. Насколько я вижу, фрагмент хорош, покакак он работает на странице расширения (не в скрипте контента) - Мохамед Мансур 9 января в 23:45 "

Видимо, это ответ.

1 голос
/ 10 января 2011

Попробуйте добавить Content-type и Content-length заголовки:

var str = 'ProjectMemberId='+ProjectMemberId+'&ProjectId='+ProjectId;

var xhr = new XMLHttpRequest();
xhr.open("POST", "http://www.ontimepunchcard.com/scripts/punch.php", true);
xhr.onreadystatechange = function() { ... }

xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("Content-length", str.length);

xhr.send(str);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...