如何从javascript发布,然后使用帖子回复进行更新?

时间:2014-10-04 04:52:38

标签: javascript ruby ajax worker

我有一个在iron.io上运行的作业,当有效载荷发布到它时运行。

然后该作业返回一个文本字符串。

我希望有一个文本字段,用户可以在其中键入一些文本,将其发布到该URL,然后使用原始键入的文本和工作人员的响应更新文本区域。

如何开始解决这个问题?

有点类似于在Rails中使用Jquery和respond_to方法(我认为基本上是Ajax),但我没有使用Rails。我认为这可以通过前端的appropraite javascript完成,我使用Ruby作为worker文件。

我读完了这篇文章:How do I return the response from an asynchronous call?但我想我不清楚具体做什么,特别是在工人方面。

2 个答案:

答案 0 :(得分:0)

  

但我没有使用Rails。

你在用什么?

  

我不清楚具体做什么,特别是在工人方面。

服务器端的某些东西必须在收到请求时发送包含数据的响应。据我所知,iron.io是一种卸载工作的方法,你的服务器端应用程序并不想花费资源来做自己。因此,服务器端应用程序必须有一种方法可以向iron.io工作人员询问其结果。当服务器端应用程序获得结果时,您的应用程序必须返回响应。

  

如何开始解决这个问题?

在客户端,使用jQuery非常简单。大概是用户在输入文本字段时单击按钮?

1)使用jQuery在按钮上放置一个onclick事件处理程序:

$( "#button_id" ).click(function() {
  //Additional code goes here
});

2)获取文本字段的文本,例如

var original_text = document.getElementById("texfield1").value;

3)向网址发送ajax请求 4)在成功ajax函数中,将#1添加到响应返回的字符串中 5)在文本字段中插入组合文本。

$.post( "http://www.somesite.com", function(response) {
    $( "#textfield1" ).val( original_text + response );
}

5)可能取消提交(如果它是提交按钮)

$( "#button_id" ).submit(function( event ) {

  //Additional code goes here

  event.preventDefault();
});

答案 1 :(得分:0)

您无法使用java脚本将帖子请求发送到外部URL。由于安全原因(为了防止CSRF攻击),浏览器不允许它。

例如:如果您的网站网址是“www.yoursitename.com”,那么您可以向“yoursitename.com/XXX/YYY ...”发送ajax帖子请求,但您无法向“iron.io/XXX”发送帖子请求/ YYY ......“。浏览器不允许第二个。

您必须为此实现一些后端代码。让后端代码发送post请求并转发“iron.io”收到的响应。然后您的ajax调用可以发送到服务器的后端(本地)。从服务器接收响应并更新文本。你的后端代码在这里就像一种连接器。