JQuery Ajax ошибка - PullRequest
       3

JQuery Ajax ошибка

0 голосов
/ 02 июля 2010

Я отправляю некоторые значения формы через ajax в скрипт PHP. PHP повторяет 1, если он успешен, и 2, если нет.

PHP работает нормально, но меня перенаправляют на URL в javascript и показывают номер 1 на пустой странице, а не возвращают его обратно в запрос ajax.

Это мой javascript, кто-нибудь может увидеть, где я иду не так?

$(".save").click(function() {
var area = $("input#area").val();  
var january = $("input#january").val(); 
var target = $("input#target").val();
var ach = $("input#achieved").val(); 
var comments = $("input#comments").val(); 
var token = "<?php echo $token; ?>";
var dataString = 'area='+ area + '&january=' + january + '&target=' + target + '&achieved=' + ach + '&comments=' + comments + '&ci_token=' + token;
  $.ajax({
    type: "POST",
    url: "review/update-review/<?php echo $yr; ?>",
    data: dataString,
    success: function(msg) {

        if(msg == 1)
        {
            alert("Your review has been updated.");
        }
        else
        {
            alert("There was a problem updating your review. Please try again.");
        }

    }
  });
  return false; });

Ответы [ 3 ]

0 голосов
/ 02 июля 2010

Код выглядит довольно хорошо для меня, включая синтаксис.Тем не менее возникают некоторые возможности: -

  • URL-адрес для выполнения кода PHP, который вы используете в примере ("review/update-review/<?php echo $yr; ?>"), может быть неверно указан со ссылкой на ваш текущийpage.
  • Переменные, которые вы используете здесь для захвата значений элементов INPUT, могут создавать дополнительные специальные символы (например, "&"), что может привести к ошибочной обработке, что приведет к проблеме JavaScript,

Надеюсь, это поможет.

0 голосов
/ 02 июля 2010

Для начала if(msg == 1) не будет == 1, потому что то, что вы выбираете, является строкой, так что это будет if(msg == '1').

Где у вас есть

var dataString = 'area='+ area + '&january=' + january + '&target=' + target + '&achieved=' + ach + '&comments=' + comments + '&ci_token=' + token;

Измените это на объект следующим образом:

var dataObject = {
    area : area,
    january : january,
    target : target,
    achieved : ach,
    comments : comments,
    ci_token : token
}

, а затем измените его в запросе ajax на dataObject

Отладка

  • Firefox: firbug.
  • если вы используете chrome, нажмите Ctrl+Shift+J, чтобы открыть консоль javascript и выполнить отладку.ищите все заголовки и данные, которые вы отправляете, и вы можете использовать console.log(varaible) для отслеживания значений переменной.
0 голосов
/ 02 июля 2010

Я думаю, что проблема может быть связана с форматом ваших параметров данных.для

тип: "POST"

затем для

data: "{param1: 'param1', param2: 'param2'}"

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

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