我们有一个返回产品信息的web服务。该服务预计在后数据的JSON阵列...的从Google Sheet脚本发送JSON数组到webservice
从一个简单的HTML测试网页A示例脚本如下(此按预期工作):
<script src="//code.jquery.com/jquery-1.11.2.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ // request is array of product IDs e.g. pid:[71,72,74] // request is array of search terms e.g. find:['apples','oranges','pears'] // request can contain requested fields from products // fields:['CostPrice','Published','title','Price'] jQuery.ajax({ url : 'http://somewebsite.com/__getProductData', type: 'POST', dataType : 'json', data: { pid:[658,71,6,700], fields:['pid','CostPrice','type','published','title'] }, success:function(data) { // do something with the response... }); }, error: function( jqXHR, textStatus, errorThrown) {alert('Error Status:' + textStatus + ' Error:'+errorThrown); } } ); }); </script>
Web服务,编写在PHP中,正确接收这个。转储(print_r的)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)
现在的问题....我试图调用从谷歌表脚本的Web服务如下:
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); }
当PHP Web服务是由谷歌表脚本调用JSON数组不正确地接收:
Array ([data] => { pid=[Ljava.lang.Object;@1bfbb500} fields=[Ljava.lang.Object;@3ffbb500})
我希望这是与编码或他相关的东西aders ...我已经尝试过大多数标头和contentType的组合,但无济于事。
var headers = { "Accept":"json", "Content-Type":"application/json", };
建议任何人?
作为一种解决方法,由于您可以访问PHP代码,而不是提供JSON,请提供HTML,并请求URL GET参数。 – Kriggs