Как получить XMLHttpRequest с PHP? - PullRequest
3 голосов
/ 24 мая 2010

Я хотел бы иметь возможность читать XMLHttpRequest, который отправляется на страницу PHP. Я использую функцию прототипа Ajax.Request и отправляю простую структуру XML.

При попытке напечатать массив POST на странице PHP я не получаю никакого вывода.

Любая помощь приветствуется.

РЕДАКТИРОВАТЬ: ниже мой код

<html>
<head>

<SCRIPT type="text/javascript" src="prototype.js"></script>

</head>
<body>

<script type="text/javascript">

var xml='<?xml version=1.0 encoding=UTF-8?>';
xml=xml+'<notification>';
xml=xml+'heya there';
xml=xml+'</notification>';
xml=xml+'</xml>';


var myAjax = new Ajax.Request('http://localhost:8080/post2.php',{
    contentType: 'text/xml',
    parameters: xml,
    method: 'post',
    onSuccess: function(transport){ alert(transport.status); alert(transport.responseText); }
});

</script>

</body>
</html>

post2.php

Welcome <?php print_r($_POST); ?>!<br />

Ответы [ 4 ]

3 голосов
/ 31 мая 2010

php: // input позволяет читать необработанные данные POST, например,

Welcome <?php print(file_get_contents('php://input')); ?>!<br />

Примечание: ввод php: // недоступен с enctype = "multipart / form-data".

3 голосов
/ 24 мая 2010

Вы прочтете его точно так же, как читаете обычные переменные запроса.

$_GET['varname'] и $_POST['varname']

1 голос
/ 31 мая 2010

Когда вы используете "method: post" и хотите отправить тело сообщения, вам нужен параметр postBody.Так что-то вроде этого может сработать:

var myAjax = new Ajax.Request('http://localhost:8080/post2.php',{
    contentType: 'text/xml',
    postBody: xml,
    method: 'post',
    onSuccess: function(transport){
        alert(transport.status); alert(transport.responseText);
    }
});

Но почему вы создали документ XML на основе своего контента?Вы можете просто отправить сообщение "heya there" с postBody без XML-окружения.

Редактировать: Здесь вы найдете все параметры Ajax.Request: http://www.prototypejs.org/api/ajax/options

1 голос
/ 24 мая 2010

Вы можете использовать fopen() с оболочкой input:// или $HTTP_RAW_POST_DATA.

...