Javascript 从GoogleSheet脚本向webservice发送JSON数组

Javascript 从GoogleSheet脚本向webservice发送JSON数组,javascript,php,jquery,json,google-apps-script,Javascript,Php,Jquery,Json,Google Apps Script,我们有一个返回产品信息的Web服务。服务要求post数据中包含JSON数组。。。 来自简单HTML测试网页的示例脚本如下所示(该脚本按预期工作): <script src=“//code.jquery.com/jquery-1.11.2.min.js”> $(文档).ready(函数(){ //请求是产品ID数组,例如pid:[71,72,74] //请求是搜索词数组,例如查找:[“苹果”、“橙子”、“梨”] //请求可以包含来自产品的请求字段 //字段:['CostPrice','Publ

我们有一个返回产品信息的Web服务。服务要求post数据中包含JSON数组。。。

来自简单HTML测试网页的示例脚本如下所示(该脚本按预期工作):

<script src=“//code.jquery.com/jquery-1.11.2.min.js”> $(文档).ready(函数(){ //请求是产品ID数组,例如pid:[71,72,74] //请求是搜索词数组,例如查找:[“苹果”、“橙子”、“梨”] //请求可以包含来自产品的请求字段 //字段:['CostPrice','Published','title','Price'] jQuery.ajax({ 网址:'http://somewebsite.com/__getProductData', 键入:“POST”, 数据类型:“json”, 数据:{pid:[658,71,6700],字段:['pid','CostPrice','type','published','title']}, 成功:函数(数据){ //对回应做点什么。。。 }); }, 错误:函数(jqXHR,textStatus,errorhown){alert('error Status:'+textStatus+'error:'+errorhown);} } ); }); 用PHP编写的web服务正确地接收到这一信息。转储(打印)web服务从客户端接收的数据将导致以下数组:

Array ( [pid] => Array ( [0] => 658 [1] => 71 [2] => 6 [3] => 700 ) [fields] => Array ( [0] => pid [1] => CostPrice [2] => type [3] => type [4] => published [5] => title ) 数组( [pid]=>数组([0]=>658[1]=>71[2]=>6[3]=>700) [fields]=>Array([0]=>pid[1]=>CostPrice[2]=>type[3]=>type[4]=>published[5]=>title) 现在来看问题……我正试图从Google Sheet脚本调用webservice,如下所示:

function getProduct( pid,datetime) { // var url = 'https://somewebsite.com/__getProductData'; //pid:[658,71,6,700], fields:['pid','CostPrice','type','published','title'] var nids = new Array( 658,71,6,700 ); var fields = ['pid','CostPrice','type','published','title'] var payload = { pid : nids, fields: fields }; var options = { "method": 'POST', "payload": payload }; var response = UrlFetchApp.fetch(url, options); Logger.log(response); } 函数getProduct(pid,日期时间){ // var url='1〕https://somewebsite.com/__getProductData'; //pid:[658,71,6700],字段:['pid','CostPrice','type','published','title'] var nids=新阵列(658,71,6700); 变量字段=['pid'、'CostPrice'、'type'、'published'、'title'] var有效载荷= { pid:nids, 字段:字段 }; var期权= { “方法”:“POST”, “有效载荷”:有效载荷 }; var response=UrlFetchApp.fetch(url,选项); Logger.log(响应); } 从Google Sheets脚本调用PHP web服务时,JSON数组未正确接收:

Array ( [data] => { pid=[Ljava.lang.Object;@1bfbb500} fields=[Ljava.lang.Object;@3ffbb500}) 数组([data]=>{pid=[Ljava.lang.Object;@1BFBBB500}字段=[Ljava.lang.Object;@3ffbb500}) 我希望这是与编码或标题相关的东西…我尝试了标题和contentType的大多数组合,但没有效果

var headers = { "Accept":"json", "Content-Type":"application/json", }; 变量头={“接受”:“json”, “内容类型”:“应用程序/json”, }; 有人吗

var options = {
  "method":  'POST', 
  "payload": JSON.stringify(payload)
};

或者对pid和字段的每个值进行字符串化。

乔纳森-您建议的注释就是解决方案

这不起作用:

var options =
 {
 "method": 'POST',
 "payload": JSON.stringify(payload)
 };
但是有效负载数组元素上的stringify有效(请注意,简单元素在没有stringify的情况下有效,例如“text”:“此处的某些文本”):


我想我已经解决了同样的问题:

有效负载必须以这种方式准备!我在制作一个变通PHP脚本时找到了这个解决方案

  var payload =
      {       
        "fields[0]":"firstString",
        "fields[1]":"anotherString in array",        
      }

这不是很直观,但对我来说效果很好!

作为一种解决方法,因为您可以访问PHP代码,而不是提供JSON、HTML和带有URL GET参数的请求。
 var nids = [658,71,6,700 ];
 var fields = ['pid','CostPrice','type','published','title']
 var payload =
      { 
      pid : JSON.stringify(nids),
      fields: JSON.stringify(fields)
   };
var options =
 {
 "method": 'POST',
 "payload": payload
 };
  var payload =
      {       
        "fields[0]":"firstString",
        "fields[1]":"anotherString in array",        
      }