В сообщении об ошибке говорится, что вы должны делать: вы должны использовать оператор «new» для создания «XMLHttpRequest».
Где вы создаете свой АЯКС объект, изменить var ajax = XMLHttpRequest();
к var ajax = new XMLHttpRequest();
Поскольку вы используете JQuery в любом случае, вы можете использовать jquerys ajax method сделать запрос Ajax вместо того, чтобы иметь дело с browser specifics of XMLHttpRequest.
$("#saveSig").click(function saveSig() {
//encode URI
var sigData = encodeURIComponent(canvas.toDataURL("image/png"));
$.ajax({
type: "POST",
url: 'sign/signature.php',
contentType: 'application/upload',
data: sigData,
success: function() {
$("#imgData").html('Thank you! Your signature was saved');
}
});
$('#debug').html(sigData);
});
Update В ответ на вас комментарии:
Вы должны понимать, что это Javascript и ... click(function saveSig() {...}
выполняется в браузере. Поэтому вы не должны ставить php там, потому что php должен быть выполнен веб-сервером. Когда вы нажимаете на элемент «#saveSig», браузер выполняет эту функцию, и с вызовом $.ajax(...)
он отправляет новый HTTP-запрос POST на веб-сервер в фоновом режиме, вызывая url 'sign/signature.php'. Данные ответа на этот запрос доступны для функции успеха. Ниже приведен пример того, как веб-сервер (php) и браузер (javascript) могут работать вместе.
знак/signature.php
<?php
// read the request data:
$sigData = (isset($_POST['data'])) ? $_POST['data'] : "";
$user_id = (isset($_POST['UserId'])) ? $_POST['userId'] : "";
// process your sigData here (e.g. save it in the database together with the user_id)
//generate the response:
echo "Successfully saved signature for user id: ".$user_id.".";
?>
JavaScript:
$("#saveSig").click(function saveSig() {
//encode URI
var sigData = encodeURIComponent(canvas.toDataURL("image/png"));
$.ajax({
type: "POST",
url: 'sign/signature.php',
contentType: 'application/upload',
data: {
data: sigData,
user_id: $('#user_id').val() // this get's the value from the hidden user_id input
},
success: function (responseData) {
$("#imgData").html('Thank you!' + responseData);
}
});
$('#debug').html(sigData);
});
Может AJAX Introduction по W3Schools Вам интересно
С помощью этого метода AJAX, как я могу добавить
'<входной тип = "hidden" name = "user_id" id = "user_id" type = "text" value = " php echo $ user_id;?>"> 'это последняя часть, которую мне нужно сохранить в DB –
thank вы, эта часть, покажите мне идентификатор, но в БД не сохраните его ... Я помещаю этот код внутри файла signature.php: '$ user_id = (isset ($ _ POST ['Data']))? $ _POST ['Data']: ""; ',' $ user_id = (isset ($ _ POST ['user_id']))? $ _POST ['user_id']: ""; ',' $ user_id = $ _ POST ['Data']; 'и' $ user_id = $ _ POST ['user_id']; 'и всегда сохранять его с' 0' .. где ошибка? –
Так что, если я уйду, у вас есть вход на вашей странице, который был сгенерирован php с ''? Затем вы хотите отправить это значение в файл signature.php вместе с sigData? – marco