【问题标题】:Issue with Volusion APIVolusion API 的问题
【发布时间】:2015-12-07 09:42:51
【问题描述】:

我正在使用 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 获取该数据。虽然第一次使用这个 url 它会显示数据,但是当我刷新它时它不会显示。

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

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

【问题讨论】:

  • 永远不要在任何客户端代码中使用您的 Web 服务登录电子邮件地址和加密密码。如果你这样做,你不妨把它贴在这里,因为没有区别。您几乎是在向任何人提供您网站的免费通行证。不要这样做!
  • 我没看到,谢谢指出。同样的,我给你举了一个通过JQuery使用你的API的例子,那是不安全的,我累得想不出为什么不说,所以我说我认为它不会起作用。如果您需要这些信息,如果您与我联系,我会告诉您,我将从我的答案中删除关于 j 查询的部分,因为它存在最终用户安全风险,并且不符合 PCI...但是如果您尝试解释如果它是产品页面上的产品信息,我可能会帮助你在没有 API 的情况下获取数据,更清楚你想要完成的事情......

标签: jquery ajax volusion


【解决方案1】:

绝对不要使用这种方法。 安全风险。进入第二部分,已删除 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 子句。)

脚本因可被利用而被删除,我拒绝在商业中宣传不安全的做法。


使用自定义 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

For More Information See Volusion Developer Documentation Samples

  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中。

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

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

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

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


参考:

【讨论】:

    猜你喜欢
    • 2017-04-12
    • 1970-01-01
    • 1970-01-01
    • 2017-03-16
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多