2010-11-23 79 views
1

我通過AJAX將POST參數發送到XSLT樣式表。AJAX/XSL:在XSLT中使用POST參數

AJAX代碼片段:

//param name/value is nodeid=1 
xhttp.open("POST",dname,false); 
xhttp.setRequestHeader("Content-type", "text/plain"); 
xhttp.setRequestHeader("Content-length", params.length); 
xhttp.setRequestHeader("Connection", "close"); 
xhttp.send(params); 

XSL片斷

<xsl:param name="nodeid" /> 
<xsl:template match="/"> 
    Hi <xsl:value-of select="$nodeid" /> 
</xsl:template> 

「嗨」 是回來的響應,但不是NODEID。這看起來很簡單,所以我錯過了什麼?我試過它在本地以及JRun/Coldfusion上運行。思考?

+0

您還沒有表現出其上應用的轉換XML文檔,沒有顯示出轉換本身,都沒有shoun的定義和`$ nodeid`值,沒有顯示出誰以及如何調用轉化,都沒有顯示轉化的結果。這根本不是問題。請修改您的問題並提供完整的信息,以便人們不必猜測。 – 2010-11-23 03:33:19

回答

0

在處理之前使用處理器特定的API來獲取nodeid參數。無論是在PHP:

$transformer = new XSLTProcessor(); 
$transformer->importStylesheet("foo.xsl"); 
$transformer->setParameter('', 'nameOfPage', $_POST['nameOfPage']); 

或ColdFusion:

<cffile action="read" file="C:\CFusion\wwwroot\testdocs\simpletransform.xsl" 
variable="xslDoc"> 

<cfset mystruct={nameOfPage=request.nameOfPage}> 
<cfset transformedXML = XmlTransform(mydoc, xslDoc, mystruct)> 

<cffile action="write" file="C:\CFusion\wwwroot\testdocs\transformeddoc.xml" 
output=transformedXML> 

或VBScript:

nameOfString = WScript.Stdin.ReadAll 

或在awk:

BEGIN { FS = "=" } ; { print $2 | xargs xsltproc foo.xsl foo.xml --param nameOfPage } 

參考