Javascript JSON-将代码从JQuery转换为PHP
我正在尝试将一段代码从JQuery转换为PHP,以向远程服务器发送json POST请求 我的Jquery代码是:Javascript JSON-将代码从JQuery转换为PHP,javascript,php,jquery,json,Javascript,Php,Jquery,Json,我正在尝试将一段代码从JQuery转换为PHP,以向远程服务器发送json POST请求 我的Jquery代码是: $( document ).ready(function() { $('#button').click( function() { $.ajax({ method: "POST", url: "http://http://www.fedex.com/trackingCal
$( document ).ready(function() {
$('#button').click(
function() {
$.ajax({
method: "POST",
url: "http://http://www.fedex.com/trackingCal/track",
data: {
action: "trackpackages",
format: "json",
locale: "it_IT",
version: "1",
data: '{"TrackPackagesRequest":{"appType":"WTRK","uniqueKey":"","processingParameters":{},"trackingInfoList":[{"trackNumberInfo":{"trackingNumber":"780909642310","trackingQualifier":"","trackingCarrier":""}}]}}'
}
})
.done(function( msg ) {
console.log( msg );
});
}
)
});
我想从PHP做同样的POST请求调用,但我不能
我的PHP代码是:
$data = array("action" => "trackpackages", "data" => array ('TrackPackagesRequest' => array('appType' => 'WTRK', 'uniqueKey' => '', 'processingParameters' => '{}', 'trackingInfoList' => array(array('trackNumberInfo' => array('trackingNumber' => '780909642310', 'trackingQualifier' => '', 'trackingCarrier' => ''))))), 'format' => 'json', 'locale' => 'it_IT', 'version' => '1');
$data_string = json_encode($data);
$ch = curl_init('http://www.fedex.com/trackingCal/track');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
$result = curl_exec($ch);
echo $result;
远程服务器没有正确响应,似乎没有收到正确编码的数据。有人能帮我解决这个问题吗
谢谢大家! 这对我很有用:
<?php
/* You need to define that parameter separately,
* as it is supposed to be passed as a JSON String.
*/
$data_field = array(
'TrackPackagesRequest' => array(
'appType' => 'WTRK',
'uniqueKey' => '',
'processingParameters' => (Object)array(), // Will be stringified as {}
'trackingInfoList' => array(
array(
'trackNumberInfo' => array(
'trackingNumber' => '780909642310',
'trackingQualifier' => '',
'trackingCarrier' => ''
)
)
)
)
);
$data = array(
"action" => "trackpackages",
'format' => 'json',
'locale' => 'it_IT',
'version' => '1',
"data" => json_encode($data_field) // Insert the String
);
$ch = curl_init('http://www.fedex.com/trackingCal/track');
curl_setopt($ch, CURLOPT_POST, 1);
// http_build_query will convert your parameters to param1=val1¶m2=val2...
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
echo $result;
?>
这对我很有用:
<?php
/* You need to define that parameter separately,
* as it is supposed to be passed as a JSON String.
*/
$data_field = array(
'TrackPackagesRequest' => array(
'appType' => 'WTRK',
'uniqueKey' => '',
'processingParameters' => (Object)array(), // Will be stringified as {}
'trackingInfoList' => array(
array(
'trackNumberInfo' => array(
'trackingNumber' => '780909642310',
'trackingQualifier' => '',
'trackingCarrier' => ''
)
)
)
)
);
$data = array(
"action" => "trackpackages",
'format' => 'json',
'locale' => 'it_IT',
'version' => '1',
"data" => json_encode($data_field) // Insert the String
);
$ch = curl_init('http://www.fedex.com/trackingCal/track');
curl_setopt($ch, CURLOPT_POST, 1);
// http_build_query will convert your parameters to param1=val1¶m2=val2...
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
echo $result;
?>
在jQuery代码中,data
中的data
参数只是一个字符串(看起来像JSON),而在PHP代码中它是一个对象。也许试着调整一下。谢谢你的支持。我尝试了你的建议,但仍然不起作用。在jQuery代码中,data
中的data
参数只是一个字符串(看起来像JSON),而在PHP代码中它是一个对象。也许试着调整一下。谢谢你的支持。我试过你的建议,但还是不起作用。