- 締切済み
とあるAJAXでの値の受け取り方について
PHPはわかりますが、JSはまったくの初心者です。 こちらのサンプルでAJAXの練習中です。 http://www.imztry.net/dhtml/027/027-2.html 動作はするんですが、その値をどうすればフォームとして($_POST)で 受け取ることができるのか、お力をお借りしたいと思います。 「save」ボタンを押すと、下のほうにメッセージが流れます。 box3|node17; box3|node18; の値をPOSTデータで送りたいんですが、どうもうまくいきません。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- yuu_x
- ベストアンサー率52% (106/202)
function sendDragDropNodes() { var req = new XMLHttpRequest(); var xml = xslTransform(document, 'dragdrop.xsl'); req.open('POST', 'receiver.php', true); req.setRequestHeader('Content-Type', 'application/xml'); req.send(xml); } function xslTransform (doc, xsl) { // IE may not works var xmlDoc, xslDoc, xslProc; xslDoc = document.implementation.createDocument('', '', null); xslDoc.async = false; xslDoc.load(xsl); xslProc = new XSLTProcessor(); xslProc.importStylesheet(xslDoc); xmlDoc = xslProc.transformToDocument(doc); return xmlDoc; } ============= dragdrop.xsl ====================================== <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" encoding="UTF-8"/> <xsl:template match="/"> <dragdrop> <xsl:apply-templates select="//*[@id='dhtmlgoodies_dragDropContainer']//ul" /> </dragdrop> </xsl:template> <xsl:template match="ul"> <xsl:element name="{@id}"> <xsl:apply-templates select="li" /> </xsl:element> </xsl:template> <xsl:template match="li"> <xsl:element name="{@id}"> <xsl:copy-of select="text()" /> </xsl:element> </xsl:template> </xsl:stylesheet> ============= receiver.php ====================================== <?php if (isset($HTTP_RAW_POST_DATA)) { $xml = simplexml_load_string($HTTP_RAW_POST_DATA); ... } else { } ?>
- yuu_x
- ベストアンサー率52% (106/202)
//@cc_on function sendDragDropNodes() { var req = new /*@if(1) ActiveXObject("Msxml2.XMLHTTP.3.0") @else@*/ XMLHttpRequest() /*@end@*/; var data = dragDropData(); req.open('POST', 'receiver.cgi', true); req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); req.send(data); } function dragDropData() { var data = []; var uls = dragDropTopContainer.getElementsByTagName('UL'); for(var no=0;no<uls.length;no++){ // LOoping through all <ul> var lis = uls[no].getElementsByTagName('LI'); for(var no2=0;no2<lis.length;no2++){ data[data.length] = encodeURIComponent(uls[no].id) + '[]=' + encodeURIComponent(lis[no2].id); } } return data.join('&'); } <input type="button" value="save" onclick="sendDragDropNodes();" onkeypress="sendDragDropNodes();" />