AJAX Post для себя в PHP - PullRequest
       4

AJAX Post для себя в PHP

2 голосов
/ 03 сентября 2011

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

IЯ использую AJAX для публикации данных в self, который является файлом, который содержит php и html.Я могу написать php нормально, но после успешного поста ajax, как мне вернуть только те данные, которые обрабатываются через php, а не оставшиеся html?Лучше просто опубликовать отдельный скрипт?

Ответы [ 4 ]

7 голосов
/ 03 сентября 2011

Если у вас есть PHP, обрабатывающий запрос POST в начале файла, вы можете просто сделать что-то вроде этого:

<?php
    if (isset($_POST['somevar'])) {
        /* do something */
        exit(0);
    }
?>

exit() остановит загрузку страницы в этой строке.

Я, например, думаю, что лучше использовать отдельный скрипт для обработки динамических запросов AJAX.

3 голосов
/ 03 сентября 2011

Вы можете очистить измененные части получившегося документа и вставить их на исходную страницу. Таким образом, вы также можете заставить свою страницу работать для пользователя с отключенным JavaScript, который ничего не делает специально.

Пример:

<html><title>Unobtrusive AJAX Example</title>
<script type="text/javascript" 
src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js">
</script><script type="text/javascript">

$("form.ajax[id]").live('submit', function() {
        $(this).find("input[type='submit']").attr("disabled", true);
        $.ajax({
            type: $(this).attr('method') || 'POST',
            url: $(this).attr('action') || window.location.pathname,
            data: $(this).serialize(),
            context: $(this), 
            success: function(data) {
                $(this).html(
                    $(data).find("#" + $(this).attr("id")).html()
                );
            }
        });
    return false;            
});
</script>
</head><body>
<div><form method="post" class="ajax" id="main">
    <p><?php echo date('H:i:s'); ?></p>
    <p><input type="submit"></p>
</form></div>
<!-- keep the div: you got to have at least one div to make it work -->
</body></html>
2 голосов
/ 03 сентября 2011

Это всегда зависит от ваших потребностей, но если вам достаточно использовать один и тот же сценарий, то сделайте это.

Если вы хотите, чтобы сценарий не отправлял ничего, кроме вашего ответа на XML-HTTP-запроспосле отправки данных используйте exit(); in PHP , что завершит выполнение сценария на этом этапе.

0 голосов
/ 06 августа 2014

Положить в сценарий:

if($_POST['id']) {

$data = array('return'=>'returnValue');
$data = json_encode($data);

exit($data); }

Javascript:

$.ajax({
    url: 'frmSelf.php',
    data: $("#frmSelf").serialize(),
    dataType: 'json',
    type : 'post',
    success : function(returnData) {
        console.log(returnData);
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...