如何将PHP数组传递给JavaScript变量?
问题描述:
我有以下的JavaScript发送参数的PHP文件:如何将PHP数组传递给JavaScript变量?
function getOutput()
{
$.ajax({
url:'myPHPFile.php',
data:{APIKey:$APIKey,Password:$APIPass,Alias:$Alias,DataCenter:$DataCenter},
type:'POST',
complete: function (response) {
$('#output').html(response.responseText);
},
error: function()
{
$('#output').html('Bummer: there was an error!');
}
});
return response.responseText;
}`
从而改变了下面的HTML到PHP文件的输出:
<a href="#" onclick="return getOutput();"> test </a>
这里是PHP
<?php
// echo nl2br("\nIntializing api.php \n");
// DATA SECTION
$APIKey = $_POST["APIKey"];
$APIPass = $_POST["Password"];
$AccountAlias = $_POST["Alias"];
$dataCenter = $_POST["DataCenter"];
$data = array(
"APIKey" => $APIKey,
"Password" => $APIPass,
);
$url_send = 'https://api.ctl.io/REST/Auth/Logon/';
$json_data = json_encode($data);
function sendPostData($url, $post, $cook = null){
// echo "Beginning sendPostData($url, $post, $cook)";
$ch = curl_init($url);
$headers= array('Accept: application/json','Content-Type: application/json');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS,$post);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
if (!empty($cook))
{
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json','Content-Type: application/json','Cookie:'.$cook));
}
$result = curl_exec($ch);
curl_close($ch); // Seems like good practice
return $result;
};
$myresult = sendPostData($url_send, $json_data);
// print_r ($myresult);
$decodedresult = json_decode($myresult);
// print_r ($decodedresult);
'/reply-(.*?)-private/';
preg_match_all('/Tier3(.*?)path=/', $myresult, $matches);
$cookies = array();
foreach($matches[0] as $item)
{
parse_str($item, $cookie);
$cookies = array_merge($cookies, $cookie);
}
$prefix = 'Tier3.API.Cookie=';
$cookie = implode(" ",$matches[0]);
// Call the customer server list
$data = array(
'AccountAlias' => $AccountAlias,
'Location' => $dataCenter
);
$data_url = 'https://api.ctl.io/REST/Server/GetAllServersForAccountHierarchy/';
$data_string = json_encode($data);
$dataResult = sendPostData($data_url,$data_string, $cookie);
print_r($dataResult);
return $dataResult;
`
如何获取$ dataResul将PHP数组转换为JavaScript变量,以便我可以解析它?这是来自API的大JSON响应。
谢谢。
答
Ajax调用(通常)是异步的,这意味着return response.responseText;
将立即执行,甚至会引发与response
相关的错误未定义。
您将在ajax调用的complete
事件中得到响应,并且在那里您应该继续执行脚本。 jQuery将自动解析JSON,并且response
将成为结果对象。
另一方面,PHP脚本应该只是打印json_encode()
的结果,而不是其他的以使响应成为有效的JSON。
或者发送json作为ajax响应,或者当您生成页面时将其嵌入到页面中:var var var var = var?var json_encode($ your_array); ?>;' –
[将PHP数组传递给JavaScript函数]的可能重复(http://stackoverflow.com/questions/4885737/pass-a-php-array-to-a-javascript-function) –