我有一个脚本向php脚本发出ajax请求
// ajax request for Weather
$.ajax({
type: "POST",
url: "Json/weatherAPI.php" ,
data: {
postcode: postcode,
display:'fadeout' ,
color:'blue' ,
timed_display:'20'},
dataType: 'json',
success:JsonDataReturned ,
});
这会调用我的PHP脚本,然后将天气API排队并将Json数据返回到我上面的脚本,所有这一切正常(下图)
$postcode = $_POST['postcode'];
$url = "http://www.myweather2.com/developer/forecast.ashx?uac=" . $api . "&output=json&query=" . $postcode ;
$response = fopen($url, "r");
$response = fgets($response, 4096);
echo $response ;
在此之后,在同一个PHP脚本中,我想用'post'数据更新我的SQL DB,见下文(数据库已连接)
$query = 'UPDATE data_weather_control SET ';
$values = array();
foreach ( $_POST as $key => $value ) {
$query .= ' '.$key.' = :'.$key.','; // the :$name part is the placeholder, e.g. :zip
$values[':'.$key] = $value; // save the placeholder
};
$query = substr($query, 0, -1) ; // remove last ,
$query .= " WHERE id='dataman' " ;
$qry = $pdo->prepare($query);
$qry->execute($values); // bind placeholder array to the query and execute everything
我相信所有看起来都很好,我知道我有'post'数据,但它不会更新我的数据库,但是如果我单独运行php脚本(没有ajax调用)它会更新。我的问题:我的PDO语句是正确的还是当calles作为ajax请求时PHP脚本无法正常执行?
有任何帮助吗?,
答案 0 :(得分:0)
PHP不知道请求是否是AJAX,除非您设置变量并自行检查,因此请求应该有效。我怀疑PHP正在寻找'POST'变量但你的ajax可能正在发送一个必须被解码的JSON字符串。做一个print_r($ _ POST),看看“单独”或从你的ajax调用运行它之间的区别。您可能需要解析传入的JSON(在请求的正文中)。无论是什么,print_r都会帮助您解决问题。