【问题标题】:Converting Curl request to jQuery AJAX将 Curl 请求转换为 jQuery AJAX
【发布时间】:2018-02-16 04:32:38
【问题描述】:

除了网站之外,我在获取 -d 之后的所有内容时都遇到了麻烦。卷曲命令:

curl -H “Authorization: Token #{auth_token}” -X GET -d ‘basket_id=#{basket_id}&price=#{price}&title=#{title}&merchant_url=#{merchant_url}&comment=#{comment}&product_url=#{product_url}&merchant_name=#{merchant_name}&color=#{color}&size=#{size}&product_image_url=#{product_image_url}’ http://localhost:3000/api/v1/baskets/add

这是我目前所拥有的:

$.ajax({
        url: "http://localhost:3000/api/v1/baskets/add",
        type: 'GET',
        processData: false,
        headers: { 'Authorization' : token_string },
         data: "'basket_id=1&price=22800&title=Tory%20Burch&merchant_url=https://www.bloomingdales.com&product_url=https://www.bloomingdales.com/shop/product/tory-burch-minnie-travel-ballet-flats?ID=1830976&CategoryID=16963#fn=ppp%3D%26spp%3D2%26sp%3D1%26rid%3D121%7CBOOST%20SAVED%20SET%26spc%3D492%26rsid%3Dundefined%26pn%3D1%7C6%7C2%7C492&merchant_name=Bloomingdales&color=Black/Gold&size=5&product_image_url=https://images.bloomingdales.com/is/image/BLM/products/2/optimized/9262012_fpx.tif?wid=800&qlt=90,0&layer=comp&op_sharpen=0&resMode=sharp2&op_usm=0.7,1.0,0.5,0&fmt=jpeg'",
        success: function (data) {
          window.response = JSON.stringify(data);
          console.log(response);
          console.log(data);
        },
        error: function(){
         console.log("Cannot get data");
        }
    });

这是我在浏览器中得到的响应:{"response":"Missing attributes: Basket ID, Merchant Name"}

我还有其他 curl 命令,例如:curl -H “Authorization: Token #{auth_token}” -X GET http://localhost:3000/api/v1/baskets/ 工作正常,并且我收到了来自服务器的响应,因此它肯定与授权令牌或链接没有任何关系。任何帮助将不胜感激。

我还应该提到,ajax 请求中的数据字符串减去双引号后,在终端中对我来说完美运行,并且请求通过了。

【问题讨论】:

    标签: jquery ajax api curl


    【解决方案1】:

    问题是因为您已将 data 用双 单引号括起来 - 它应该是一个或另一个:

    data: 'basket_id=1&price=22800&title=Tory%20Burch&merchant_url=https://www.bloomingdales.com&product_url=https://www.bloomingdales.com/shop/product/tory-burch-minnie-travel-ballet-flats?ID=1830976&CategoryID=16963#fn=ppp%3D%26spp%3D2%26sp%3D1%26rid%3D121%7CBOOST%20SAVED%20SET%26spc%3D492%26rsid%3Dundefined%26pn%3D1%7C6%7C2%7C492&merchant_name=Bloomingdales&color=Black/Gold&size=5&product_image_url=https://images.bloomingdales.com/is/image/BLM/products/2/optimized/9262012_fpx.tif?wid=800&qlt=90,0&layer=comp&op_sharpen=0&resMode=sharp2&op_usm=0.7,1.0,0.5,0&fmt=jpeg',
    

    虽然您也可以提供一个对象,让 jQuery 为您对值进行 URL 编码,但您可能会遇到与发送的 URL 中的与号 (&) 字符有关的一些问题。您还需要删除processData: false。试试这个:

    data: {
      basket_id: 1,
      price: 22800,
      title: 'Tory%20Burch',
      merchant_url: 'https://www.bloomingdales.com',
      product_url: 'https://www.bloomingdales.com/shop/product/tory-burch-minnie-travel-ballet-flats?ID=1830976&CategoryID=16963#fn=ppp%3D%26spp%3D2%26sp%3D1%26rid%3D121%7CBOOST%20SAVED%20SET%26spc%3D492%26rsid%3Dundefined%26pn%3D1%7C6%7C2%7C492',
      merchant_name: 'Bloomingdales',
      color: 'Black/Gold',
      size: '5',
      product_image_url: 'https://images.bloomingdales.com/is/image/BLM/products/2/optimized/9262012_fpx.tif?wid=800&qlt=90,0&layer=comp&op_sharpen=0&resMode=sharp2&op_usm=0.7,1.0,0.5,0&fmt=jpeg'
    }
    

    【讨论】:

    • 我确实尝试过,但它仍然给了我这个错误:{“response”:“Missing attributes: Merchant Name”}。我想因为它是在单引号中才能在终端中工作,所以我需要确保那些在请求中读取。
    • 我为您更新了答案 - 问题在于 URL 中未编码的 &
    • 我昨天(现在又一次)尝试了这个,这就是响应。 {"response":"缺少属性:购物篮 ID、标题、商家名称、商家 URL、产品 URL"}
    • 也尝试删除processData: false
    • 用您的第二个响应删除它有效!太感谢了。我将它用于我的所有其他请求,因为它们没有数据并且我没有考虑将其删除。
    猜你喜欢
    • 1970-01-01
    • 2015-10-06
    • 2016-10-10
    • 1970-01-01
    • 2018-03-11
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多