使用 Javascript Ajax 调用的 Azure 机器学习

Posted

技术标签:

【中文标题】使用 Javascript Ajax 调用的 Azure 机器学习【英文标题】:Azure Machine Learning using Javascript Ajax call 【发布时间】:2016-09-21 22:39:19 【问题描述】:

我想知道是否可以使用 javascript Ajax 调用 Azure 机器学习 Web 服务。

Azure ML 提供了 C#、Python 和 R 的示例代码。

我确实尝试过使用 JQuery Ajax 调用 web 服务,但它返回失败。

我可以使用 python 脚本调用相同的服务。

这是我的 Ajax 代码:

  $.ajax(
        url: webserviceurl,
        type: "POST",           
        data: sampleData,            
        dataType:'jsonp',                        
        headers: 
        "Content-Type":"application/json",            
        "Authorization":"Bearer " + apiKey                       
        ,
        success: function (data) 
          console.log('Success');
        ,
        error: function (data) 
           console.log('Failure ' +  data.statusText + " " + data.status);
        ,
  );

【问题讨论】:

返回什么故障?您正在查看 statusText 和状态。他们说什么?控制台是否显示任何错误?如果您注意error 函数的第二个和第三个参数,它们是否说了什么有用的东西?浏览器开发者工具的“网络”选项卡显示什么?是否正在提出请求?它得到响应了吗? 我收到错误 404。在研究了更多之后,我发现 Azure ML 不支持 CORS。 link. 【参考方案1】:

根据我的经验,这似乎是超时造成的,所以我认为您可以尝试参考SO线程Set timeout for ajax (jQuery)的答案来设置ajax请求的超时。

希望对您有所帮助。


有一个已回答的 SO 线程 Azure Machine Learning - CORS 与您的问题类似。我觉得很有帮助,请尝试。

【讨论】:

我确实尝试过,但我认为这不是一个真正的问题。起初我收到 CORS 错误,为了解决这个问题,我将数据类型添加为 jsonp。现在我收到 404 错误代码。 Azure ML Web 服务设置有什么可以做的吗? @Tilak 嗨,我更新了我的帖子,请尝试。如果有任何更新,请随时告诉我。 @PeterSmith 是的..这就是我发现 Azure ML 不支持 CORS【参考方案2】:

由于未在 Azure ML Web 服务上启用 CORS,因此无法正常工作。您可以使用可从 JavaScript 调用的 Azure API 管理来包装 Azure ML Web 服务 - https://azure.microsoft.com/en-us/documentation/articles/api-management-get-started/

【讨论】:

【参考方案3】:

经过大量的 RnD,我终于能够使用一些变通方法调用 Azure ML。

在 Azure API 上包装 Azure ML Web 服务是一种选择。

但是,我所做的是创建了一个调用 Azure 网络服务的 Python 网络服务。

所以现在我的 html 应用程序调用 python webservice,它调用 Azure ML 并将数据返回给 HTML 应用程序。

【讨论】:

以上是关于使用 Javascript Ajax 调用的 Azure 机器学习的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 javascript/jquery/AJAX 调用 Django REST API?

Ajax 调用加载的 Javascript 不执行?

Ajax 调用阻止其他 javascript 代码

使用ajax调用从javascript保存txt文件到PHP

使用 Javascript Ajax 调用的 Azure 机器学习

仅在 javascript 循环完成后执行 ajax 调用