Я хочу отправить результаты из jQuery quiz «jQuizzy» по электронной почте.
Это код, который отправляет POST в файл с именем send.php
if (config.sendResultsURL !== null) { console.log("OH HAI"); var collate =[]; for (r=0;r<userAnswers.length;r++) { collate.push('{questionNumber:"'+parseInt(r+1)+'", UserAnswer:"'+userAnswers[r]+'"}'); } $.ajax({ type: 'POST', url: "send.php", data: '[' + collate.join(",") + ']', complete: function () {console.log("OH HAI");} }); }
и вот простой PHP-код для отправки электронной почты.
<?php $to = "example@example.com"; $subject = "jQuizzy!"; $jsonStr = $_POST["ajax"]; $json = json_decode($jsonStr); $body = "$json"; mail($to, $subject, $body); ?>
EDIT: Извините, проблема заключается в том, что результаты публикуются на странице send.php, потому что электронная почта проходит, но электронная почта является простой / пустой.
EDIT 2: я даже не думал о проверке журналов php-error, о которых я узнал, что мой сервер не настроен, но после его настройки кажется, что на стороне php нет ошибок.
Параметр data
должен быть либо действительным url-кодированным данным, либо хешем объекта. То, что вы передаете, это строка, которая выглядит так, как будто это JSON. Это не имеет никакого смысла, но сложно предложить что-то, потому что вы действительно не сказали, в чем ваша проблема.
Попробуйте отправить данные как объект.
data: { ajax: '[' + collate.join(",") + ']' },