2012-05-07 9 views
7

, если быть честным, я начинаю начинать с jQuery, и теперь я застрял. Я хочу отправить данные из моей HTML-формы в php, она добавляет данные в базу данных и возвращает некоторое значение, которое я хотел бы отображать в своем исходном HTML-коде. Вот мой код:Функция jQuery ajax возвращает ошибку

$.ajax({ 
    type: "POST", 
    url: "http://mysite.com/process.php", 
    data: { data: mydata }, 
    cache: false, 
    dataType: "text", 
    error: function(jqXHR, textStatus, errorThrown){ 
     alert(jqXHR.status); 
     alert(jqXHR.statusText); 
     alert(jqXHR.responseText); 
    }, 
    success: function(data){ 
     getContentBox().innerHTML = data; 
} 
}); 

Он возвращает объект jqXHR с status = 0, statusText = "ошибки" и пустым responseText. Тем не менее, мой php, похоже, работает, я вижу, что мои данные вставлены в мою БД. Что я делаю не так?

Любая помощь будет оценена по достоинству. Спасибо заранее!

EDIT: Хром консоль говорит XMLHttpRequest не может загрузить http://mysite.com/data.php. Происхождение http://www.mysite.com не разрешено Access-Control-Allow-Origin.

+0

Какие заголовки отправляют ваш php-скрипт? какой результат? – Fender

+0

Вы посмотрели запрос/ответ в Firebug или какой-нибудь другой инструмент? –

+0

PHP просто распечатывает текст (print $ data;). Просто посмотрел запрос с Chrome: Текст состояния: (отменено) Тип: application/x-www-form-urlencoded; charset = UTF-8 – nXu

ответ

1

Комментарий ShelbyZ привел меня к решению:

Браузер отказался выполнить запрос, когда я попытался использовать абсолютный URL, мне пришлось написать его как относительный.

$.ajax({ 
    type: "POST", 
    url: "process.php", 
    data: { data: mydata }, 
    cache: false, 
    dataType: "text", 
    error: function(jqXHR, textStatus, errorThrown){ 
     alert(jqXHR.status); 
     alert(jqXHR.statusText); 
     alert(jqXHR.responseText); 
    }, 
    success: function(data){ 
     getContentBox().innerHTML = data; 
} 
}); 

Спасибо!

0

Попробуйте это (вы забыли закрыть скобку):

$.ajax({ 
    ... 
    success: function(data){ 
    getContentBox().innerHTML = data; 
    } 
}); 
+0

Ergh, true, в моем скрипте он есть, это просто ошибка копирования-вставки. Спасибо, тo. – nXu

0

Почему бы не использовать встроенный почтовые функции JQuery, чтобы упростить данной ИЭ

  $.post('http://mysite.com/process.php', mydata, function(data) { 
       if (data.status == 1) { 
        getContentBox().html() = data; 
       } else { 
        alert(data.status); 
        alert(data.statusText); 
        alert(data.responseText); 
       } 
      }); 

им не уверен, что ваши ответы состояния так что вам, возможно, придется отредактировать это, но это будет работать, если вы положите его внутри $('form here').submit(function() {POSTCODEHERE});

0

У меня была та же проблема. Функция Ajax была привязана к кнопке (type = "submit") внутри <form>, поэтому всегда, когда я нажимал эту кнопку, моя страница перезагружалась, а функция error работала вместо success. Я действительно не знаю, как это связано, но когда я добавляю event.preventDefault() к прослушивателю действия кнопки, и он стал работать нормально.

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