PHP ile XMLHttpRequest almak nasıl?

4 Cevap php

Ben bir PHP sayfası gönderilen XMLHttpRequest okumak mümkün istiyorum. Ben Prototipin Ajax.Request işlevini kullanıyorum, ve ben basit bir XML yapısını yolluyorum.

PHP sayfada POST dizi yazdırmaya çalışırken, herhangi bir çıktı alamadım.

Herhangi bir yardım takdir.

EDIT: Aşağıda benim kodudur

<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 Cevap

Eğer normal istek değişkenler okumak tam kobi şekilde okuyacak.

$_GET['varname'] ve $_POST['varname']

giriş :/ / sarıcı veya $ HTTP_RAW_POST_DATA fopen

php :/ / input gibi ham POST veri okumak için izin verir

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

Not: php :/ / input enctype = "multipart / form-data" ile mevcut değildir.

Kullandığınız zaman "yöntemi: yazı" ve sonrası vücut göndermek istiyorsanız, parametre postBody gerekir. Yani böyle bir şey işe yarayabilir:

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);
    }
});

Ama neden içerik etrafında bir XML dokümanı oluşturmak mı? Sadece civarı XML olmadan postBody ile "orada heya" mesajı gönderdi.

Edit: Burada tüm Ajax.Request seçenekleri bulabilirsiniz: http://www.prototypejs.org/api/ajax/options