Передача данных из Jquery в php superglobals не работает

avatar
marijn
8 апреля 2018 в 08:46
147
1
0

Я пытаюсь передать данные из моего js-файла с помощью Jquery в php. Однако, когда я отправляю запрос через браузер, я возвращаю значение null. Мой php-класс $imageurl не установлен, как и мой суперглобальный $_POST. Я понятия не имею, почему это происходит, потому что, если я устанавливаю fullimgurl через почтальона, мой php-запрос полностью работает. Я попытался отправить его обратно декодированным, а также закодированным. похоже, ничего из этого не работает, что странно, поскольку работает через почтальона.

Вот мой код Jquery:

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js”></script>
</head>
<body>
<form enctype="multipart/form-data">
<input type="file" accept="image/*" onchange="loadFile(event)" >
<button name="submit" id="submit"></button>
</form>


<img src="" id="output"/>

<div id="textOutput"></div>

<script>
var imgfullurl;

$("#submit").on('click', function(e) {
    e.preventDefault();
    $.ajax({
        url: 'test1.php',
        type: 'POST',
        data: { imgfullurl: imgfullurl },
        dataType: "json",
        contentType : "application/json",
        success: function (data) {
            $('#textOutput').html(data);
            console.log(data);
        },
        error: function (error) {
            alert(error);
        }
    })
})


var loadFile = function(event) {
    var reader = new FileReader();
    reader.onload = function(){
        var output = document.getElementById('output');
        output.src = reader.result;
        imgfullurl = reader.result;
        console.log('imageurl');
        console.log(imgfullurl);
    };
    reader.readAsDataURL(event.target.files[0]);

};


</script>
</body>
</html>

А вот мой файл php:

if (isset($_POST['imgfullurl'])){
$imageurl = $_POST['imgfullurl'];
}

echo json_encode($imageurl);
Источник
Ultimater
8 апреля 2018 в 08:51
0

Вы пробовали echo file_get_contents("php://input");?

Syscall
8 апреля 2018 в 08:53
2

Где в вашем JavaScript определена переменная imgfullurl? Вы уверены, что он определен? Вы пытались console.log(imgfullurl) до $.ajax()?

marijn
8 апреля 2018 в 08:53
0

да, это дает мне нарушение обработчика нагрузки

marijn
8 апреля 2018 в 08:54
0

@Syscall да, я это сделал, он содержит строку base64, как и должно быть, я отредактирую ее, чтобы дать вам остальную часть кода js/jquery

Ultimater
8 апреля 2018 в 08:58
0

Что, если вы сделаете что-то вроде data: JSON.stringify( {imgfullurl: imgfullurl) } перед передачей в PHP?

Pedram
8 апреля 2018 в 08:59
0

По этому коду imgfullurl пусто

marijn
8 апреля 2018 в 09:00
0

вовсе нет @Pedram, событие onload запускается перед нажатием кнопки, которое устанавливает var imgfullurl в строку base64, журнал, который запускается, когда я загружаю изображение на свою html-страницу, явно регистрирует строку base64

Özgür Can Karagöz
8 апреля 2018 в 09:06
0

Почему вы задаете один и тот же вопрос дважды? coderhelper.com/questions/49692000/…

Pedram
8 апреля 2018 в 09:07
0

Вы пробовали var_dump($_POST);?

Ответы (1)

avatar
Belal Awwad
8 апреля 2018 в 09:04
1

Попробуйте использовать FormData

Например:

$( "#myForm" ).submit(function( event ) {
  event.preventDefault();

  url = $( "#myForm" ).attr( "action" );
  var formData = new FormData($(this)[0]);

  formData.append("yourkey", "yourvalue");

  $.ajax({
    url: url,
    type: 'POST',
    data: formData,
    async: false,
    cache: false,
    dataType: "json",
    contentType: false,
    processData: false,
    success: function (data) {
            if (data=='SUCCESS'){
            alert("Hi");
            //location.reload();

        }
            else

            alert("Something is Wrong !!"+data)
         }

  });
marijn
8 апреля 2018 в 09:06
0

Могу ли я получить значение в php по ключу formdata?

Belal Awwad
8 апреля 2018 в 09:08
0

Да, если вы видите, что можете добавить свои ключи с необходимыми значениями, например, formData.append("imgfullurl", imgfullurl);