2016-03-29 3 views
0

Я бы хотел, чтобы мой ajax отображал мое эхо из файла php после публикации данных. Я отправляю данные в базу данных, и когда сообщение успешно, я бы хотел, чтобы он эхо «Complete» собирался использовать любой результат, который я получаю из сообщения, чтобы определить, какое сообщение я получаю из обработанного php-файла. В тот момент, когда я попал в submit, он вставляет данные, но когда я добавляю предупреждение, чтобы увидеть, отражают ли данные в моем сценарии ajax «Complete», вместо этого я получаю html-код созданной таблицы и слово «Complete» at дно. Я хотел бы, чтобы Complete был в параметре статуса.JQuery ajax не показывает результат php echo

Ajax Script

$.ajax({ 
      type: "POST", 
      data: $('#frm').serialize(), 
      url: "create_submitted.php?", 
      cache:false, 
      success: function (status) { 
         alert(status); 
         location.reload(); 
       } 
      }); 

Php Script

session_start(); 
require_once("database.php"); 
require_once("class.php"); 
$reg = new SUBMITTED(); 
$reg->month = $_POST["month_s"]; 
$reg->year = rtrim($_POST["year_s"]); 
$reg->month_year = $reg->year."-".date('m',strtotime($_POST["month_s"]))."-00"; 
$reg->user_fk = $_SESSION['franchise_code']; 
$reg->create(); 
echo json_encode("Complete"); 
+3

Когда вы даете 'location.reload();', он перезагружает страницу. Лол. –

+0

комментарий 'datatype: 'json'', затем попробуйте. –

+0

И да, удалите' datatype:' json ', '. –

ответ

0

Попробуйте это:

$.ajax({ 
type: "POST", 
data: $('#frm').serialize(), 
url: "create_submitted.php?", 
cache:false, 
success: function (status) { 
    alert(status);  
}}); 

Вы были перезагрузки страницы каждый раз, когда сценарий был успешным из-за location.reload(); Кроме того, datatype: 'json', не требуется.

+0

и что он делает? – Jai

+0

@Jai обновленный ответ. – GrumpyCrouton

1

Удалите location.reload, вместо этого вы можете обновить только необходимый фрагмент html (например, div или другой элемент, куда будут поступать данные). Вам не нужно, чтобы удалить datatype:json на JS, как и упоминавшиеся в комментариях, но если вы ждете, чтобы быть JSON возвращается, вам необходимо установить соответствующий заголовок в PHP с:

header("Content-Type: application/json"); 

так, что JQuery не будет игнорировать ответ с другим заголовком типа контента, который по умолчанию является «text/plain» или «text/html».

Вы можете обновить HTML с:

$("#targetElement").html("my html code"); 

или без JQuery:

document.querySelector("#targetElement").innerHtml("my html code"); 

Кроме того, я настоятельно рекомендую вам сделать некоторые проверки ваших PHP сценариев, в противном случае вы настраиваете себя на XSS, если кто-то вставляет в представленные данные неприятный тег <script> (вы можете избежать этого, передав ваш полученный вход на стороне php на htmlentities(__input_goes_here__)

UPDATE: Забыл упомянуть, что вам нужно установить заголовок в phpbefore, чтобы что-либо печаталось на странице.

Кроме того, если вы проверяете обратный вызов here вы увидите, что успех может принимать 3 параметра:

Type: Function(Anything data, String textStatus, jqXHR jqXHR) 

где:

  • data это данные, возвращаемые с сервера
  • textStatus - информация о статусе, возвращаемая с сервера (404, 200 и т. Д.)
  • jqXHR is jq который вызвал вызов.

В настоящее время вы принимаете только один параметр, но я рекомендую вам console.log все три, чтобы вы могли понять, что может быть неправильным.

Надеюсь, что это поможет :)

+0

Я боюсь, что это не сработало Я добавил, что в моем файле php удалено location.reload, и на этот раз ничего не было предупреждено – Taps101

+0

@TapuwaSimonMundeta вам нужно установить заголовок на php, прежде чем что-либо распечататься, иначе вы получите «заголовки» уже отправлен ". Будет соответствующим образом обновлять ответ – ddrjm

Смежные вопросы