Возможно ли изменить содержимое html без обновления страницы на основе результата запроса ajax? [Дубликат]

У меня есть другая перспектива ответить на это.

При работе на разных уровнях, например, в приложении MVC, контроллеру нужны службы для вызова бизнес-операций. В таких сценариях контейнер инжекции зависимостей может использоваться для инициализации служб, чтобы исключить исключение NullReferenceException. Это означает, что вам не нужно беспокоиться о проверке нулевого значения и просто вызвать службы с контроллера, как будто они всегда будут доступны (и инициализированы) как одиночный или прототип.

public class MyController
{
    private ServiceA serviceA;
    private ServiceB serviceB;

    public MyController(ServiceA serviceA, ServiceB serviceB)
    {
        this.serviceA = serviceA;
        this.serviceB = serviceB;
    }

    public void MyMethod()
    {
        // We don't need to check null because the dependency injection container 
        // injects it, provided you took care of bootstrapping it.
        var someObject = serviceA.DoThis();
    }
}
39
задан user191688 9 March 2010 в 17:45
поделиться

3 ответа

Я понял это. Необходимо использовать эхо в PHP вместо возврата.

<?php 
  $output = some_function();
  echo $output;
?> 

И jQ:

success: function(data) {
  doSomething(data);
}
65
ответ дан user191688 28 August 2018 в 15:41
поделиться
  • 1
    if $output - массив, как вы вернете этот массив? – Arun Kumar 8 February 2018 в 11:04
  • 2
    Если $output - массив, то используйте json_encode так: echo json_encode($output) – Máxima Alekz 20 April 2018 в 18:54

Да, то, как вы это делаете, совершенно законно. Чтобы получить доступ к этим данным на стороне клиента, отредактируйте свою функцию успеха, чтобы принять параметр: data.

$.ajax({
    type: "POST",
    url: "somescript.php",
    datatype: "html",
    data: dataString,
    success: function(data) {
        doSomething(data);
    }
});
2
ответ дан Aaron 28 August 2018 в 15:41
поделиться
  • 1
    Я так и думал, но предупреждение (данные) появляется. И я знаю, что $ output в PHP не равен нулю. Я попробую textStatus. – user191688 9 March 2010 в 17:58

Это аргумент, переданный вашей функции успеха:

$.ajax({
  type: "POST",
  url: "somescript.php",
  datatype: "html",
  data: dataString,
  success: function(data) {
    alert(data);
    }
});

Полная подпись - success(data, textStatus, XMLHttpRequest), но вы можете использовать только первый аргумент, если это простая строка возвращается. Как всегда, см. Документы для полного объяснения :)

11
ответ дан Benjamin 28 August 2018 в 15:41
поделиться
  • 1
    В точку! Я вижу, что ты избил меня до этого ... – Aaron 9 March 2010 в 17:50
Другие вопросы по тегам:

Похожие вопросы: