0

我正在使用 volusion 商店创建一个网站。我希望产品显示在产品页面上,为此我正在自定义代码。我已经创建了 volusion api,即标准导出,我只需要使用带有 ajax 的 api 获取产品详细信息到页面。那么我该如何实现呢?对于第一种类型,我创建了带有 .xml 扩展名的 api,例如 https:///dataport/dl/Generic/Products.xml 然后它显示数据,我也可以获取该数据,但对于第二种类型的 url,例如 http :///net/WebService.aspx?Login=&EncryptedPassword=&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 我无法使用 ajax 获取该数据。

下面我分享了我的代码,所以请查看它并帮助我解决这个问题,

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

1 回答 1

0

绝对不要使用这种方法。安全风险。继续第二部分,已删除 Jquery 答案。

如何使用 jquery 进行 java 数据调用

我没有太多运气使用 jquery 来做到这一点。但是您可能想尝试这样的事情来执行您正在尝试的 jquery 加载......您可能还想检查您正在加载的 jquery 版本,因为 volusion 出于某种原因为您提供了旧版本。将此添加到您当前正在使用的 template.html 中。您可能需要使用 ftp 将其与其他 javascript 一起上传到您的服务器...

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

在您要访问数据的页面上尝试此操作。(没有承诺,但您需要仔细检查您的代码语法,这对我来说似乎很离谱,如果您不使用自定义 asp 页面,您还必须在查询中包含 where 子句。)

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


使用自定义 asp 页面通过自定义查询和连接安全地访问 Volusion API Web 服务。

为您自己的服务使用自定义 ASP 页面 Volusion 不支持将 asp.net 用于自定义脚本,但您可以使用 asp classic。您可以通过以下方法制作一个asp页面。

  1. 使用 XML 读取查询字符串,我建议输入代码对其进行清理。例如:

dim oXMLHttp
dim Xml_Returned

set oXMLHttp = Server.CreateObject("Msxml2.serverXmlHttp")
oXMLHttp.open "POST", "http://YourUrl/net/WebService.aspx?
Login=YourEmail@YourDomain.com&
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

有关更多信息,请参阅 Volusion 开发人员文档示例

  1. 从您的查询字符串构造您的 SQL 查询。

  2. 将您的查询字符串定义为变量,将您的api连接字符串定义为常量,并通过url输入。你可以做一个帖子,但做一个获取会更快。

  3. 编写一个自定义 sql 文件并将其保存在与您要进行的查询匹配的通用文件夹中。或者,使用 vb 的文件系统对象在 http 请求上创建它。

  4. 创建一个 xml 模式文件并将其存储在 Schema/Generic 文件夹中。

  5. 现在你通过在 java 中使用 httpget 来调用这个文件,YOURURL.COM/v/vspfiles/schema/generic/YOURCUSTOMSCRIPT.ASP?CUSTOMWHEREVARIABLEORWHATEVERITIS=THISISYOURMODIFIERUNLESSTHEQUERYISSTATIC

  6. 如果您使用 asp 的 fso 创建了 sql 文件,请在调用后删除该文件。

  7. 将数据返回到请求它的 javascript 中。

请参阅 5 月 7 日 14:37 发布的“TheCodeWhisperer”的答案,以获取执行我所说的示例代码。

现在我知道这有点简短,但每个结果都是不同的,这就是我知道的方法,它对我来说比使用 jquery 更通用。

这里有一些额外的链接供您参考。如果您需要更多帮助,请告诉我。

您应该可以使用此方法。以下链接将有所帮助。如果你没有得到任何地方,我会尽快帮助你,我有更多的时间。


参考:

于 2015-12-06T17:16:32.523 回答