Перейти к содержанию
Официальный форум поддержки Simpla

Ошибка 500 (Internal Server Error) при отправке AJAX запроса.


Рекомендуемые сообщения

Добрый день!
Хочу сделать возможность скачивать "прайс лист" в формате PDF.

Есть страница со списком товаров, по нажатию на кнопку JS берет данные с html и через AJAX отправляет их в нужный файл где уже mpdf делает оставшуюся работу.

Но, при нажатии на кнопку происходит ошибка Ошибка 500 (Internal Server Error).

 

Как пофиксить ошибку? Может я в скрипте ошибся
 

 $('.btn-pdf').on('click', function() {
        //var amount =  $('#quantity').val();
        var data = $('.active').html();

        $.ajax({
            method: "POST",
            url: "ajax/mpdf.php",
            data: data,
            dataType: 'json'
        });
    });

 

Ссылка на сообщение
Поделиться на другие сайты

Параметр data у Вас какой-то странный. В Simpla полно примеров работы с AJAX, смотрите. И конечно, в Сети тоже можно много найти...

Ссылка на сообщение
Поделиться на другие сайты

 

Добрый день!

Но, при нажатии на кнопку происходит ошибка Ошибка 500 (Internal Server Error).

Как пофиксить ошибку? Может я в скрипте ошибся

 

 
    

 

 

 

<!-- Скрипт {literal} -->
     Ваш код
<!-- Скрипт {/literal} -->
 

нет?

Ссылка на сообщение
Поделиться на другие сайты

 

<!-- Скрипт {literal} -->
     Ваш код
<!-- Скрипт {/literal} -->
 

нет?

подключается через отдельный файл.

 

 

Параметр data у Вас какой-то странный. В Simpla полно примеров работы с AJAX, смотрите. И конечно, в Сети тоже можно много найти...

Делаю по примеру корзины.

 

Полный текст ошибки в консоли.

POST http://test/ajax/mpdf.php 500 (Internal Server Error)

Ссылка на сообщение
Поделиться на другие сайты
$('.btn-pdf').on('click', function() {
   $.ajax({
     method: "POST",
     url: "ajax/mpdf.php",
     data: {html: $('.active').html()},
.............................

 

В mpdf.php получайте переменную post html

Ссылка на сообщение
Поделиться на другие сайты

 

$('.btn-pdf').on('click', function() {
   $.ajax({
     method: "POST",
     url: "ajax/mpdf.php",
     data: {html: $('.active').html()},
.............................

 

В mpdf.php получайте переменную post html

Не работает,

код пхп файла 

$html = json_decode($_POST['html'],true);

require_once(dirname(__DIR__).'/'."mpdf/mpdf.php");

$mpdf = new mPDF('utf-8', 'A4', '8', '', 10, 10, 7, 7, 10, 10); /*задаем формат, отступы и.т.д.*/
$mpdf->charset_in = 'UTF-8'; /*не забываем про русский*/

//$stylesheet = file_get_contents('style.css'); /*подключаем css*/
//$mpdf->WriteHTML($stylesheet, 1);

$mpdf->list_indent_first_level = 0;
$mpdf->WriteHTML($html, 2); /*формируем pdf*/
$mpdf->Output('mpdf.pdf', 'I');

Ссылка на сообщение
Поделиться на другие сайты

Видятся сразу такие ошибки:

1. method: "POST"  - не работает такое в методе  ajax.

Это Вы от yr4ik-а ошибочку подцепили. Надо использовать  type: "POST"

2. json_decode - это совсем не нужно использовать.

Ссылка на сообщение
Поделиться на другие сайты

1. method: "POST"  - не работает такое в методе  ajax.

Это Вы от yr4ik-а ошибочку подцепили. Надо использовать  type: "POST"

И где же ты тут мою "ошибочку"  увидел?!!!

 

1е - Это не ошибка, а новое имя параметра. Читай доки http://api.jquery.com/jquery.ajax/

 

type (default: 'GET')

Type: String

An alias for method. You should use type if you're using versions of jQuery prior to 1.9.0.

 

2е - по дефолту в симпле версия 1.7.2. С этой точки зрения type - да правильно.

Но ТС использовал параметр method (поэтому я его и оставил). 

 

 

 

AFI

1 строка должна быть:

$html = $_POST['html'];
И в дальнейшем если "не работает" - то пишите что именно.

Какая ошибка или что происходит.

Мы не экстрасенсы...

 

А вообще, для начала, не плохо было бы описать суть затеи

То я что то совсем не соображу что это!

Отправляется аякс запрос на сервер где переданная в post

 засовывается в pdf и (насколько я знаю библиотеку mpdf) - полученный pdf (Output с флагом I) - отдается назад аяксу.

У которого (судя по вашим постам) даже нет функции для обработки.

 

И в чем тут логика и что должно работать?

Изменено пользователем yr4ik
Ссылка на сообщение
Поделиться на другие сайты

И в чем тут логика и что должно работать?

 

Конечно, описанные Вами недостатки имеют место, но ТС пока в первом посте ставил вопрос более простой: пофиксить ошибку 404. А для ошибки в ajax/mpdf.php возможностей много, например:

1. Первая же строка даст для $html пустое значение.

2. Во второй строке, очень возможно, неверный путь, и не срабатывает подключение.

3. По ходу могут возникнуть PHP-сообщения об ошибках...

 

А чтоб узнать точно, надо, как Вы правильно заметили, иметь полную информацию...

Увы, часто спрашивают  весьма легкомысленно - ляпнул что-то кое-как, не озаботившись сообщить детали.

Например, если бы в этой теме ТС сразу дал URL, можно было бы многое определить точнее...

Ссылка на сообщение
Поделиться на другие сайты

 

И где же ты тут мою "ошибочку"  увидел?!!!

 

1е - Это не ошибка, а новое имя параметра. Читай доки http://api.jquery.com/jquery.ajax/

  

2е - по дефолту в симпле версия 1.7.2. С этой точки зрения type - да правильно.

Но ТС использовал параметр method (поэтому я его и оставил). 

 

 

 

AFI

1 строка должна быть:

$html = $_POST['html'];
И в дальнейшем если "не работает" - то пишите что именно.

Какая ошибка или что происходит.

Мы не экстрасенсы...

 

А вообще, для начала, не плохо было бы описать суть затеи

То я что то совсем не соображу что это!

Отправляется аякс запрос на сервер где переданная в post

 засовывается в pdf и (насколько я знаю библиотеку mpdf) - полученный pdf (Output с флагом I) - отдается назад аяксу.

У которого (судя по вашим постам) даже нет функции для обработки.

 

И в чем тут логика и что должно работать?

Конечно, описанные Вами недостатки имеют место, но ТС пока в первом посте ставил вопрос более простой: пофиксить ошибку 404. А для ошибки в ajax/mpdf.php возможностей много, например:

1. Первая же строка даст для $html пустое значение.

2. Во второй строке, очень возможно, неверный путь, и не срабатывает подключение.

3. По ходу могут возникнуть PHP-сообщения об ошибках...

 

А чтоб узнать точно, надо, как Вы правильно заметили, иметь полную информацию...

Увы, часто спрашивают  весьма легкомысленно - ляпнул что-то кое-как, не озаботившись сообщить детали.

Например, если бы в этой теме ТС сразу дал URL, можно было бы многое определить точнее...

 

Суть описал, но не подробно.  Мой косяк. Задумка была в том, что человек кликает на кнопку, js забирает часть html и отправляет его в php где создается пдф и автоматом скачивается(в Output параметр D изменил).

А по поводу ошибок, все что я имел на тот момент я написал. Когда получил доступ к логам

ошибки стали явны, не работал autoloader, ругался на __DIR__ или когда подключал на прямую пропустил /.

 

А вот по поводу функции обработки можно поподробней? Как js обработает файл которЫй вернет output?

Изменено пользователем AFI
Ссылка на сообщение
Поделиться на другие сайты

А вот по поводу функции обработки можно поподробней? Как js обработает файл которЫй вернет output?

Обработает в точности так, как напишет программист.

Смотрите образцы в стандартной Simpla, например, в ajax/ajax_cart.js

Задумка была в том, что человек кликает на кнопку, js забирает часть html и отправляет его в php где создается пдф и автоматом скачивается(в Output параметр D изменил).

Для такой постановки AJAX и не нужен, с ним только сложнее.
Ссылка на сообщение
Поделиться на другие сайты

Конечно, описанные Вами недостатки имеют место, но ТС пока в первом посте ставил вопрос более простой: пофиксить ошибку 404.

Не 404, а 500. И полагаю она должна была решиться решением в посте #5.

Поскольку там получался запрос вида http://site/?<html><body>и тд</body></html>

 

Задумка была в том, что человек кликает на кнопку, js забирает часть html и отправляет его в php где создается пдф и автоматом скачивается(в Output параметр D изменил).

Что за html?

Одинаковый везде или разный для всех страниц?

Он отображается на сайте или скрыт?

Изменено пользователем yr4ik
Ссылка на сообщение
Поделиться на другие сайты

Что за html?

 

Видимо, тот, который определяется в определенном месте:

$('.active').html();

 

Одинаковый везде или разный для всех страниц?

Он отображается на сайте или скрыт?

 

Для программирования нужной функциональности это вроде бы не имеет значения...

 

 

Ссылка на сообщение
Поделиться на другие сайты

Видимо, тот, который определяется в определенном месте:

$('.active').html();

Ух ты какой умный...

 

Для программирования нужной функциональности это вроде бы не имеет значения...

Может для тебя и не имеет значения.

А мне  что бы написать человеку решение нужно знать что за html

Это может быть какой то статический (различная банк информация и тд), а может быть какой нибудь товар.

Исходя из этих данных я определю как лучше формировать этот pdf и отдавать его пользователю.

Ссылка на сообщение
Поделиться на другие сайты

Может для тебя и не имеет значения.

А мне  что бы написать человеку решение нужно знать что за html

Это может быть какой то статический (различная банк информация и тд), а может быть какой нибудь товар.

Исходя из этих данных я определю как лучше формировать этот pdf и отдавать его пользователю.

Очень интересно.

И какая будет разница в программировании, если, например, контент "Одинаковый везде" или "разный для всех страниц"?

А если сегодня "Одинаковый везде", а через пару дней изменится и станет "разный для всех страниц" - менять реализацию придется?

А еще может быть и более сложный вариант - когда ни "Одинаковый везде", ни "разный для всех страниц"...

Изменено пользователем Kors
Ссылка на сообщение
Поделиться на другие сайты

Очень интересно.

И какая будет разница в программировании, если, например, контент "Одинаковый везде" или "разный для всех страниц"?

А если сегодня "Одинаковый везде", а через пару дней изменится и станет "разный для всех страниц" - менять реализацию придется?

А еще может быть и более сложный вариант - когда ни "Одинаковый везде", ни "разный для всех страниц"...

Корс - это мне тебе объяснять нужно или ТС??

Я задал вопросы ТС. Ты тут причем? 

 

Допустим контент одинаковый - то можно сделать разовый генератор прямо в ajax/mpdf.php и писать pdf-файл по изменению. 

Если контент не менялся то просто делать редирект на файл.

Если контент динамический - то запись в файл - не пройдет. Нужно делать с флагом "I"

И тогда с аяксом будет проблемно. Проще будет попуп в новой вкладке

Ссылка на сообщение
Поделиться на другие сайты

Я задал вопросы ТС. Ты тут причем?

 

Меня заинтересовал Ваш  специфический подход, и я задал Вам свои собственные отдельные вопросы.

 

На часть моих вопросов Вы ответили - при разных случаях контента Вы собираетесь программировать по-разному.

 

Но некоторые более интересные моменты Вы проигнорировали. Повторю:

 

А если сегодня "Одинаковый везде", а через пару дней изменится и станет "разный для всех страниц" - менять реализацию придется? В такой ситуации пользователю к Вам опять обращаться, чтоб Вы скрипт изменили? А если еще через пару дней пользователь  назад захочет ситуацию вернуть - опять на поклон к программисту?

 

Насколько я знаю, программирование заключается в том, чтобы программа (скрипт), написанная один раз, работала во многих разных ситуациях, при любых (допустимых) исходных данных. И задавать вопросы типа - а Вы собираетесь использовать скрипт с одинаковым значением параметра или с разными - выглядит довольно глуповато, особенно от программиста.

Ссылка на сообщение
Поделиться на другие сайты

Я собственно потому и задал вопросы в посте 12!

Что бы сделать более подходящий вариант

 

 

Корс иди на...! Задрал уже своимы тупыми постами!

Изменено пользователем yr4ik
Ссылка на сообщение
Поделиться на другие сайты

Я собственно потому и задал вопросы в посте 12!

Что бы сделать более подходящий вариант

Подходящий КОМУ?

Обычно СРАЗУ стараются программировать так, чтобы работало ВСЕГДА. А Вы хотите предложить свой специфичный ограниченный вариант?

И чтобы при каждом пустяковом изменении на сайте пользователь обращался к yr4ik, чтобы тот заново перепрограммировал - так будет подходяще?

 

Ссылка на сообщение
Поделиться на другие сайты

Обычно СРАЗУ стараются программировать так, чтобы работало ВСЕГДА. А Вы хотите предложить свой специфичный ограниченный вариант?

 

И откуда же ты знаешь какой вариант я хочу предложить?

Я лишь задал наводящие вопросы ТС по смыслу его затеи.

А ты уже где то ограниченное решение увидел... 

Ссылка на сообщение
Поделиться на другие сайты

И откуда же ты знаешь какой вариант я хочу предложить?

 

Не знаю. Для того и спрашиваю, чтоб узнать, но ответов точных от Вас не поступает.

 

Повторю вопрос:

 

А если сегодня "Одинаковый везде", а через пару дней изменится и станет "разный для всех страниц" - менять реализацию придется? В такой ситуации пользователю к Вам опять обращаться, чтоб Вы скрипт изменили? А если еще через пару дней пользователь назад захочет ситуацию вернуть - опять на поклон к программисту?

Ссылка на сообщение
Поделиться на другие сайты

Че й то вы далеко от АЯКСА ушли

 

Может, и далеко. Но зато какой интересный подход обнаружили. Страшно интересно - программист сделает так, что время от времени непременно переделывать придется...

 

А если Вас интересует что по АЯКСу - спрашивайте точно и конкретно...

 

А ТС, судя по всему, ошибку свою нашел, поправил и про тему забыл...

Ссылка на сообщение
Поделиться на другие сайты

Ты где блядь увидел что и как я сделаю?!

Я еще сам не решил как делать, а ты уже увидел??!

Монитор протри лучше!

Изменено пользователем yr4ik
Ссылка на сообщение
Поделиться на другие сайты

Я еще сам не решил как делать, а ты уже увидел??!

Монитор протри лучше!

  

Спасибо за ценный совет. Согласно Вашим указаниям протер монитор. Увидел, что Вы не дали вообще никакого ответа на мои простенькие вопросы:

 

Не знаю. Для того и спрашиваю, чтоб узнать, но ответов точных от Вас не поступает.

 

Повторю вопрос:

 

А если сегодня "Одинаковый везде", а через пару дней изменится и станет "разный для всех страниц" - менять реализацию придется? В такой ситуации пользователю к Вам опять обращаться, чтоб Вы скрипт изменили? А если еще через пару дней пользователь назад захочет ситуацию вернуть - опять на поклон к программисту?

 

В соответствии с принципом "молчание - знак согласия" решил, что мои догадки верны. Видимо, тут я поторопился и поступил несколько самонадеянно. Если мои догадки не верны, сообщайте точно, что и как Вы будете решать при каждом варианте...

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...