2015-01-26 2 views
1

Я получаю синтаксические ошибки при вызове php-файла с помощью ajax.Получение «Синтаксическая ошибка: неожиданный токен» при вызове функции из ajax

Uncaught SyntaxError: Unexpected token F 
Uncaught SyntaxError: Unexpected token F 
Uncaught SyntaxError: Unexpected token F 
Uncaught SyntaxError: Unexpected token F 
Uncaught SyntaxError: Unexpected token F 
Uncaught SyntaxError: Unexpected token F 

change_produkt функция вызывается с OnClick событие в поле флажок. Выход этой функции заключается в следующем:

Return of change_produkt function

Теперь я называю вторую функцию fill_optionen и передать массивы этой функции. Он выполняет вызовы ajax для каждого объекта. (6 раз в данном случае)

Javascript:

function fill_optionen(optionen) { 
    console.log("fill_optionen called.."); // Debug 
    var text = ""; 

    $j.each(JSON.parse(optionen), function (index, value) { 

     jQuery.ajax({ 
      url: 'include/mutation_helper.php', 
      data: {func: "render_opt", option: value}, 
      type: 'post', 
      success: function(output) { 
       console.log(JSON.parse(output)); // Debug 

      } 
     }); 
    }); 
    } 

function change_produkt() { 
    console.log("change_produkt called.."); // Debug 

    var id_produkt = $j("#produkt").val(); 
    console.log("DEBUG -- id_produkt:"+id_produkt); 

    jQuery.ajax({ 
     url: 'include/mutation_helper.php', 
     data: {func: "get_opts", produkt: id_produkt}, 
     type: 'post', 
     success: function(output) { 
      console.log(JSON.parse(output)); // Debug 

      fill_optionen(output); 
     } 
    }); 
    } 

PHP:

function render_opt() { 
    if(!isset($_POST['option'])) { 
     echo json_encode("error"); 
     exit; 
    } 

    $opt = $_POST['option']; 

    $render = render($opt, $_SESSION['mutation']); 

    echo json_encode("hello"); 
} 

Как только я удалить строку, которая вызывает функцию render, она работает. Но почему есть ошибка? Я даже не распечатываю переменную $render. (Функция render возвращает только код html в строке.)

+1

В качестве побочного примечания вместо вызова нескольких запросов ajax в цикле вам нужно было бы позвонить только один раз со всеми передаваемыми значениями и установить логическую сторону сервера –

+0

в соответствии с вашим кодом, эта строка '$ render = render ($ option, $ _SESSION ['mutation']); 'должен быть' $ render = render ($ opt, $ _SESSION ['mutation']); '? – SearchAndResQ

+0

@SearchAndResQ Вы правы. Но ошибки все еще существуют. – Vince

ответ

3

Похоже, что у вас есть ошибка PHP внутри вашего render функции. И затем PHP выдает свою ошибку, которая впоследствии вызывает ошибку JavaScript. Поскольку JSON исключается как возвращаемый вывод по запросу ajax, и вы получили строку, содержащую сообщение об ошибке PHP. Посмотрите на свой отладчик браузера под аякс-запросом на сырые сетевые данные, что действительно возвращается.

+0

Функция render_option вызвала другую функцию, которой не было. Я не знал, что в инструментах разработчика есть специальная вкладка ответа. Что-то еще, что я узнал :) Спасибо. – Vince

3

jQuery автоматически обнаружит ответ JSON и десериализует его для вас. Вызов JSON.parse на результирующий объект вызовет ошибки - как вы видели. Попробуйте это:

success: function(output) { 
    console.log(output); // Debug 
    fill_optionen(output); 
} 
+0

Но ошибки не вызваны действием 'console.log'. Я попробовал, но ошибки все еще есть. :( – Vince

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