【问题标题】:Create new product with woocommerce REST API with javascript (clientside)?使用带有javascript(客户端)的woocommerce REST API创建新产品?
【发布时间】:2016-03-17 15:18:06
【问题描述】:

我尝试在 Woocommerce 中使用其 JavaScript API(客户端)创建新产品?

端点:

https://localhost/wpShop/wc-api/v2/products?consumer_key=ck_1111111111122123&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1458225139&oauth_nonce=nVq4rX&consumer_secret=cs_232332322233232&oauth_signature=kzoVx+VYSWlLbRpi3f8222222=

通过GET,我可以从 Woocommerce 获得所有产品!完美的!

但是,为什么我不能创建一个新产品?

我的新产品:

var data = {
    product: {
      title: 'Premium Quality',
      type: 'simple',
      regular_price: '21.99',
      description: 'Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.',
      short_description: 'Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.',
      categories: [
        9,
        14
      ],
      images: [
        {
          src: 'http://www.adpic.de/data/picture/detail/Wasserflasche_74756.jpg',
          position: 0
        },
        {
          src: 'http://www.adpic.de/data/picture/detail/Wasserflasche_74756.jpg',
          position: 1
        }
      ]
    }
  };

我的 ajax POST 请求:

$.ajax({
  method: "POST",
  url: woocommerceURLcreateProduct,
  data: $.param(data)
})
  .done(function( msg ) {
    console.log( "Data Saved: " );
    console.log( msg );
  });

我收到错误:

{code: "woocommerce_api_missing_callback_param", message: "Missing Parameter data"}

来源:

http://woothemes.github.io/woocommerce-rest-api-docs/v2.html?javascript#create-a-product

【问题讨论】:

  • 从您链接的页面中,create 是 POST,而不是 GET
  • 真的,谢谢。我改变了它。现在它的说法是: { "errors": [ { "code": "woocommerce_api_missing_callback_param", "message": "Missing parameter data" } ] }

标签: javascript wordpress rest woocommerce woocommerce-rest-api


【解决方案1】:

根据jQuery DocsjQuery.param(...) 获取您的对象并将其序列化为字符串,通常用于通过GET 传输数据。

根据WooCommerce Docs,您的请求应作为 JSON 字符串发送。

data: $.param(data) 替换为data: data,jQuery 的 ajax 允许您将对象作为数据传递,并且它将完成将其字符串化为端点的 JSON 字符串的所有艰苦工作。

不要忘记在 ajax 调用中将 dataType 设置为 json,这样 jQuery 就可以解析 WooCommerce 的 JSON 响应。

【讨论】:

  • 谢谢肖恩,我已经试过了,但得到同样的错误$.ajax({ type: "POST", url: woocommerceURLcreateProduct, data: data, success: success, dataType: "JSON" });
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-29
  • 2021-06-19
  • 2020-08-08
  • 1970-01-01
  • 2019-05-24
  • 2021-06-22
相关资源
最近更新 更多