从ajax请求调用时,PHP脚本可以更新我的SQL吗?

时间:2013-04-15 19:24:49

标签: php ajax json

我有一个脚本向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脚本无法正常执行?

有任何帮助吗?,

1 个答案:

答案 0 :(得分:0)

PHP不知道请求是否是AJAX,除非您设置变量并自行检查,因此请求应该有效。我怀疑PHP正在寻找'POST'变量但你的ajax可能正在发送一个必须被解码的JSON字符串。做一个print_r($ _ POST),看看“单独”或从你的ajax调用运行它之间的区别。您可能需要解析传入的JSON(在请求的正文中)。无论是什么,print_r都会帮助您解决问题。