Zapier.com邮政编码自动填充城市和州

时间:2017-01-03 23:00:53

标签: javascript zipcode zapier

我们正在使用zapier.com连接许多程序,但我需要的一个功能是从邮政编码自动填充城市和州。这在zapier.com中可用作Zapier Run Javascript的设置代码。我似乎无法解决这个问题,并且非常感谢任何帮助。

<script type="text/javascript">//<![CDATA[
    $(function() {
    // IMPORTANT: Fill in your client key
    var clientKey; // Deleted for Stack Overflow

    var cache = {};
    var container = $("#example1");
    var errorDiv = container.find("div.text-error");

    /** Handle successful response */
    function handleResp(data)
    {
      // Check for error
      if (data.error_msg)
        errorDiv.text(data.error_msg);
      else if ("city" in data)
      {
        // Set city and state
        container.find("input[name='city']").val(data.city);
        container.find("input[name='state']").val(data.state);
      }
    }

    // Set up event handlers
    container.find("input[name='zipcode']").on("keyup change", function() {
      // Get zip code
      var zipcode = $(this).val().substring(0, 5);
      if (zipcode.length == 5 && /^[0-9]+$/.test(zipcode))
      {
        // Clear error
        errorDiv.empty();

        // Check cache
        if (zipcode in cache)
        {
          handleResp(cache[zipcode]);
        }
        else
        {
          // Build url
          var url = "https://www.zipcodeapi.com/rest/"+clientKey+"/info.json/" +    zipcode + "/radians";

          // Make AJAX request
          $.ajax({
            "url": url,
            "dataType": "json"
          }).done(function(data) {
            handleResp(data);

            // Store in cache
            cache[zipcode] = data;
          }).fail(function(data) {
            if (data.responseText && (json = $.parseJSON(data.responseText)))
            {
              // Store in cache
              cache[zipcode] = json;

              // Check for error
              if (json.error_msg)
                errorDiv.text(json.error_msg);
            }
            else
              errorDiv.text('Request failed.');
          });
        }
      }
    }).trigger("change");
      });
//]]></script>

2 个答案:

答案 0 :(得分:2)

看起来你正试图在这里使用客户端JavaScript。这在Zapier代码步骤中不起作用,因为它意味着在浏览器中使用(在网页上)。要在Zapier代码步骤中发出HTTP请求,您需要使用fetch(此处有一些documentation)。

或者,从该API获取所需数据的最简单方法是使用Webhook步骤:

  1. 向Zap添加一个步骤
  2. 选择 Zapier的Webhooks 并选择GET操作
  3. 设置this之类的步骤。该步骤将返回city/state data,您可以在后续步骤中使用

答案 1 :(得分:0)

这里有几点混淆,主要是:

  

Zapier的代码不是“在浏览器中”运行的(没有<script>标签或Jquery) - 它在名为Node.js的东西中运行。

您需要完全不同地解决问题 - 请务必查看https://zapier.com/help/code/和节点文档https://nodejs.org/docs/v4.3.2/api/中的示例。