2015-12-05 124 views
0

我正在使用volusion商店創建一個網站。我希望產品能夠顯示在產品頁面上,並且我正在自定義代碼。我已經創建了api,即標準導出,我只需要使用ajax將該產品的詳細信息提取到頁面。那麼我該如何實現呢?對於第一種類型,我創建了帶.xml擴展名的API,例如, https:///dataport/dl/Generic/Products.xml,然後顯示數據,我也可以獲取該數據,但對於第二種類型的URL,例如, HTTP:///net/WebService.aspx登錄= & EncryptedPassword = & EDI_Name =通用\產品& SELECT_Columns = p.ProductID,p.ProductName,pe.Photo_AltText,pe.Photo_SubText,pe.PhotoURL_Large,pe.PhotoURL_Small, pe.Price_SubText,pe.Price_SubText_Short,pe.ProductPrice,pe.ProductPrice_Name 我無法使用ajax獲取數據。雖然第一次使用這個URL它顯示數據,但是當我刷新它然後它不顯示。問題與Volusion API

下面我分享我的代碼,請審視一下,幫我解決這個問題,

<script> 
    $(document).ready(function(){ 

$.ajax({ 
    type: "POST", 
    url: "http://<domainname.com>/net/WebService.aspx?Login=<username>&EncryptedPassword=<password>&EDI_Name=Generic\Products&SELECT_Columns=p.ProductID,p.ProductName,pe.Photo_AltText,pe.Photo_SubText,pe.PhotoURL_Large,pe.PhotoURL_Small,pe.Price_SubText,pe.Price_SubText_Short,pe.ProductPrice,pe.ProductPrice_Name", 
    dataType: "xml", 
    success: function(result) { 
     alert(result); 
     parseXml(data); 
    } 
}); 

}); 
function parseXml(data) { 
    var id; 
    var code; 
    var name; 
    $(data).find('Products').each(function(){ 
     $(this).find("ProductCode").each(function() { 
      code = $(this).text(); 
     }); 
     $(this).find("ProductID").each(function(){ 
      id = $(this).text(); 
     }); 
     $(this).find("ProductName").each(function(){ 
      name = $(this).text(); 
     }); 
     $('.col-md-6').append(code +"<br />"+ id +"<br />"+ name); 
    }); 
} 

</script> 
<div id='getresult'> 
    Api code will refelect here 
    <div class="container"> 
     <div class="row"> 
      <div class="col-md-6"></div> 
     </div> 
    </div> 
</div> 
+0

永遠不會在任何客戶端代碼中使用Webservice登錄電子郵件地址和加密密碼。如果你這樣做,你不妨將它發佈在這裏,因爲沒有什麼區別。你幾乎給任何人免費通過你的網站。不要做! – user357034

+0

我沒有看到,謝謝指出。 同樣,我給你一個通過JQuery使用你的API的例子,這是不安全的,我太累了,我想不出爲什麼不說,所以我說我不認爲它會工作。 如果你需要的信息,我會得到它,如果你與我聯繫,我將刪除從我的答案j查詢部分,因爲它是最終用戶的安全風險,而不是PCI兼容......但如果你嘗試更清楚地解釋你想要完成什麼,如果它是產品頁面上的產品信息,我可能會幫助你獲得沒有API的數據.... –

回答

0

絕對不要使用此方法。 安全風險。繼續第二節,Jquery答案已刪除。

如何用jQuery

我沒有使用jQuery做多少運氣做java的數據呼叫。但你可能想嘗試這樣的事情來做你正在嘗試的jquery加載......你可能想要檢查你正在加載的jquery版本,因爲某些原因,volusion會給你一箇舊版本。 將此添加到您當前使用的template.html中。 你可能需要把它上傳到使用FTP其他JavaScript的服務器...

<head> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 
</head> 

在要訪問數據試試這個頁面。 (不承諾,但你需要仔細檢查你的代碼的語法它似乎很掉對我來說,你還必須在你的查詢中的WHERE子句,如果你不使用自定義ASP頁。)

Script Removed As It Is Exploitable, and I refuse to promote unsafe practices in commerce.


使用自定義asp頁面安全訪問Volusion API Webservice使用自定義查詢和連接。

爲您自己的服務使用自定義ASP頁面 Volusion不支持自定義腳本的asp.net,但您可以使用asp classic。您可以通過以下方法創建一個asp頁面。

  1. 使用XML讀取querystrings,我建議放入代碼來消毒它。 例如:

dim oXMLHttp 
dim Xml_Returned 

set oXMLHttp = Server.CreateObject("Msxml2.serverXmlHttp") 
oXMLHttp.open "POST", "http://YourUrl/net/WebService.aspx? 
[email protected]& 
EncryptedPassword=YourPassword& 
API_Name=Generic\Orders&SELECT_Columns=o.OrderID,o.OrderStatus,od.TotalPrice& 
WHERE_Column=o.OrderStatus&WHERE_Value=New", False 

oXMLHttp.setRequestHeader "Content-Type", "text/xml; charset=utf-8" 
oXMLHttp.setRequestHeader "Content-Action", "Volusion_API" 
oXMLHttp.send 

Xml_Returned = oXMLHttp.responseText 

For More Information See Volusion Developer Documentation Samples

  1. 構造SQL查詢了你的查詢字符串的..

  2. 定義查詢字符串作爲一個變量,您的API連接字符串作爲一個常量,並通過url輸入。你可以做一個帖子,但只是做一個get更快。

  3. 編寫一個自定義的sql文件,並將其保存在與您想要創建的查詢相匹配的通用文件夾中。或者,使用vb的文件系統對象在http請求上創建它。

  4. 創建一個xml模式文件並將其保存在模式/通用文件夾中。

  5. 現在你用Java編寫的HTTPGET, YOURURL.COM/v/vspfiles/schema/generic/YOURCUSTOMSCRIPT.ASP?CUSTOMWHEREVARIABLEORWHATEVERITIS=THISISYOURMODIFIERUNLESSTHEQUERYISSTATIC

  6. 打它,如果你創建的SQL文件調用這個文件使用asp的fso,在調用完成後刪除文件。

  7. 將數據返回到請求它的javascript。

See The answer from "TheCodeWhisperer" Posted on May 7 at 14:37 for a Example Code Doing Just What I'm Saying Here.

現在我知道這是一個有點簡單,但每個結果都是不同的,這是我知道怎麼做,它只是我在使用jQuery更靈活。

這裏有一些額外的鏈接供您參考。讓我知道你是否需要更多幫助。

你應該可以使用這種方法。以下鏈接將有所幫助。如果你沒有到達任何地方,我會盡快幫助你。


參考文獻: