Запрос jQuery Ajax всегда возвращает null


я пытаюсь подобрать string который возвращает файл. php, делая вызов Ajax. Но он всегда входит в success, однако данные, которые он возвращает, всегда null. Чем это связано?? Я учусь, и я не очень хорошо знаю, что я делаю неправильно...

код, который я пробовал:

jQuery.ajax({
                url: '/administrator/components/views/response.php',
                method: "POST",
                dataType: "json",
                data: {
                    request: result.id
                }
            }).success(function (data) {

                console.log("Success. Data: "+ data);

            }).error(function (error, responseText) {
                console.log("Error. "+ error);

            });

файл response.php содержит только:

return "Texto de prueba";

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

Author: Norak, 2018-04-24

2 answers

Что-то очень важное, чтобы иметь в виду, когда вы бросаете запросы на сервер с помощью Ajax, - это dataType, который вы указываете.

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

Ваша программа может выглядеть так:

JS / jQuery

Я воспользовался, чтобы использовать done и fail, поскольку success и error устарели с jQuery 3.

jQuery.ajax({
                url: '/administrator/components/views/response.php',
                method: "POST",
                dataType: "json",
                data: {
                    request: result.id
                }
            }).done(function (data) {

                console.log("Success. Data: "+ data);
                console.log("Success. Data: "+ data.status);

            }).fail(function (error, responseText) {
                console.log("Error. "+ error);

            });

PHP

Здесь я создаю переменную $arrRespuesta, которая будет собирать информацию о результате произошедшего, и в конце я напечатаю эту переменную в виде json, как ожидает Ajax.

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

$arrRespuesta=array();

if (isset($_POST["request"])){

    $arrRespuesta["status"]="Correcto. Hemos recibido el valor: ".$_POST['request'];

}else{

    $arrRespuesta["status"]="Incorrecto. No se posteó el valor esperado en request";

}

header("Content-type: application/json; charset=utf-8");
echo json_encode($arrRespuesta);

Обратите внимание, что в этом примере возвращаемый массив всегда будет иметь ключ status и что в done Ajax я добавил еще один console.log, чтобы показать, что вы можете получить доступ к сообщению внутри ключа json, используя свойство status:).

Надеюсь, это полезно для вас.

 1
Author: A. Cedano, 2018-04-24 14:05:54

Я посылаю вам другой способ работы с запросами ajax ... для меня, возможно, более удобным.

"index.php" не забудьте добавить jquery.

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

 <script>
  datosEnviar = "datos que quieras mandar";
  $.post("response.php?op=1", {datosRecibir: datosEnviar}, function (resultado)
  {
    console.log(resultado)
  })
</script>

"response.php"

<?php
switch ($_GET['op']) {
    case 1: 
       $datosRecibidos =$_POST["datosRecibir"];
       echo "texto enviado";
   break;
}
?>

$.post ("response.php?op=XXX" вы отправляете любые запросы на протяжении всего проекта.

Switch ($_GET['op']) { case XXXX: вы выбираете переменную, которую вы отправляете, и приступаете к разработке кода для каждого из отправленных запросов break; }

 0
Author: Cesar Pereiro, 2018-04-24 08:54:15