2016-01-11 3 views
0

Я пытаюсь отправить объект JSON через ajax на ту же страницу. При запуске моего кода функция ajax, похоже, отправляет данные, как я могу видеть в ответе, что $ id в PHP-коде, изменяется на 200, но я не могу отобразить его на веб-странице. Я включил файл jquery.js (я не уверен, что мне нужно добавить другую библиотеку js или нет). Я попытался найти ответы на множество ответов stackoverflow, но не смог решить свою проблему. Любая помощь будет оценена по достоинству.Ajax и PHP одинаковая страница не работает

PHP код:

<?php 
     if(isset($_POST['area_id'])){ 
      $id = $_POST['area_id']; 
      echo "Area ID: ".$id; 
     } else { 
      echo "test"; 
     } 
    ?> 

JQuery AJAX

var dat = {area_id: 200, title: 'title'}; 
$.ajax({ 
    type:"POST", 
    data: dat, 
    success:function(res){ 
     alert(res); 
    } 
}); 
+0

Что показано в 'alert()'? – David

+0

Я получаю ответ HTML, где я могу увидеть «ID области: 200» – ncdreamy

+0

Итак, тогда ... как это не работает? Ожидаете ли вы «echo» ID области: «. $ Id;» для создания чего-либо *, кроме * '« Идентификатор области: 200 «'? – David

ответ

3

[на основе замечаний к вопросу ...]

Ваша страница не обновляется, потому что вы не написали код для ее обновления. echo просто испускает текст на выходе, а alert() просто отображает текст пользователю в окне сообщения. Чтобы обновить клиентскую страницу страницы, вам нужно написать код, который делает это.

Например, если у вас есть элемент с id="output" и хотите, чтобы установить текст ответа на этот элемент, вы могли бы сделать это:

$('#output').text(res); 

Этот элемент будет затем получить этот текст:

<div id="output">Area ID: 200</div> 

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

1

Заменить alert(res); с вашим кодом дисплея. Например, предположим, что вы хотите, чтобы отобразить ответ AJAX в DIV в HTML:

<div id="display-div"></div> 

тогда Javascript вам нужно, это

$('#display-div').html(res); 
1

Если вы отправляете запрос AJAX на той же странице, вы должны exit() ваш PHP скрипт:

<?php 
    if(isset($_POST['area_id'])){ 
     exit("Area ID: " . trim($_POST['area_id'])); 
    } 
    echo "test"; 
?> 

Таким образом, вы убедиться, что ничего не печатается в ответ. В противном случае вся HTML-страница (включая скрипты) будет отправлена ​​обратно.


Затем вы можете придать свой ответ в DOM, используя @David's пример.

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