我正在使用网络服务来同步我们经销商的产品。作为第一步,我构建了一个表来显示数据,以验证一切正常。我已经能够使用以下函数成功检索产品描述:
function get_description($api_key, $item){
$url = 'http://www.stl-distribution.com/webservices/json/GetProductDescription.php';
$post_vars = 'api_key='.$api_key.'&item='.$item;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$post_vars);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_HEADER,0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$return_data = curl_exec($ch);
$json_array = json_decode($return_data,true);
return $json_array;
}
我使用foreach循环显示信息如下:
<table>
<tr>
<th>ISBN</th>
<th>Description:</th>
<th>Categories:</th>
<th>Options:</th>
</tr>
<?php foreach($product_ISBNs as $item) : ?>
<tr>
<td class="center"><?php echo $item[0]?></td>
<td class="center"><?php $item_description = get_description($api_key,$item[0]); echo $item_description['description'];?>
<td class="center"><?php $item_data = get_meta_data($api_key,$item[0]); echo $item_data['product_type']; ?>
</tr>
<?php endforeach?>
</table>
虽然我已成功使用get_description()
函数检索描述,但我始终从get_meta_data()
函数中收到以下错误:
Notice: Undefined index: product_type in C:\xampp\htdocs\STLImport\view\user_form.php on line 21
get_meta_data()
函数的代码如下:
function get_meta_data($api_key, $item){
$url = 'http://www.stl-distribution.com/webservices/json/GetProductMetaBasic.php';
$post_vars = 'api_key='.$api_key.'&item='.$item;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$post_vars);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_HEADER,0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$return_data = curl_exec($ch);
$json_array = json_decode($return_data,true);
return $json_array;
}
当我在print_r()
语句之前立即执行return $json_array;
时,我收到以下错误:
Array ( [0] => Array ( [error] => "" not found ) )
根据我们经销商的网站,我们的要求正在发送和接收。每次刷新页面时,我的使用统计数据都会上升。因此,似乎没有返回数据,或者我没有正确引用它。我知道这些产品存在于数据库中,因为它返回了描述。因此,我不能正确引用它,但我找不到我的错误。我尝试使用各种组合来引用它无济于事。 Web服务文档提供了有关如何返回数据的示例:
{
"9781434768513":
{
"isbn13":"9781434768513",
"isbn":"1434768511",
"upc":"000000912992",
"title":"Crazy Love",
"subtitle":"Overwhelmed By A Relentless God",
"contributor1":"Chan, Francis",
"contributor2":"Yankoski, Danae",
"contributor3":"",
"vendor":"David C. Cook",
"release_date":"20080430",
"retail":"14.99",
"binding":"Paperback",
"product_type":"Books",
"category1":"Christian Living",
"category2":"",
"category3":"",
"grade_level_start":"",
"grade_level_end":"",
"inventory_updated":"20100825 11:25",
"tn_available":993,
"tn_onorder":240,
"nv_available":735,
"nv_onorder":0,
"image_small":"http:\/\/www.stl-distribution.com\/covers\/7814\/sm-9781434768513.jpg",
"image_medium":"http:\/\/www.stl-distribution.com\/covers\/7814\/md-9781434768513.jpg",
"image_large":"http:\/\/www.stl-distribution.com\/covers\/7814\/lg-9781434768513.jpg"
}
答案 0 :(得分:0)
我的get_meta_data()
函数似乎有错误。我的API提供商告诉我这行
$post_vars = 'api_key='.$api_key.'&item='.$item;
应该是
$post_vars = 'api_key='.$api_key.'&items='.$item;
注意添加's'。因此,$json_array
显示为空,因为它是空的。我的另一个功能是有效的,因为它不需要像GetProductMetaBasic
那样的's'。
另外,这一行
<td class="center"><?php $item_data = get_meta_data($api_key,$item[0]); echo $item_data['product_type']; ?>
应该是
<td class="center"><?php $item_data = get_meta_data($api_key,$item[0]); echo $item_data[$item[0]]['product_type']; ?></td>
因为,正如样本数据暗示的那样,数组是多维的。期望值(product_type
)包含在$item[0]
数组中。因此,$item_data['product_type']
不存在。