无法将变量值从php传递给ajax

时间:2015-05-24 12:27:06

标签: php ajax

我的阿贾克斯:

$("document").ready(function(){
          $(".form").submit(function(){
            var data = {
              "action": "test"
            };
            data = $(this).serialize() + "&" + $.param(data);
            $.ajax({
              type: "POST",
              dataType: "json",
              url: "response.php", //Relative or absolute path to response.php file
              data: data,
              success: function(data) {
                //$(".the-return").html("<br />JSON: " + data["json"] );
               // alert("Form submitted successfully.\nReturned json: " + data["json"]);
               alert(data);
                // window.location='success.php'

              }
            });
            return false;
          });
        });

我声明了一个变量来存储unique_id,如下所示:

$unique_id=uniqid();

我正在插入这样的数据:

try
{
$stmt2 = $pdo->prepare('INSERT INTO usrinfo (UUID,Name,Phone,Email,Postcode,DateReg,Reputation,ReviewPlus,ReviewNeg,Sex,Status,IsTuitionCentre) VALUES(:uuid,:name,:phone,:email,:poscode,now(),:reputation,:reviewplus,:reviewneg,:sex,:status,:permission)');
  $stmt2->execute(array(
    ':uuid' => $unique_id,
    ':name'=>$name,
    ':phone'=>$phone,
    ':email'=>$email,
    ':poscode'=>$postcode,
    ':reputation'=>78,
    ':reviewplus'=>65,
    ':reviewneg'=>3,
    ':sex'=>$gender,
    ':status'=>0,
    ':permission'=>$permission
  ));

  # Affected Rows?
  echo $stmt2->rowCount(); // 1
} catch(PDOException $e) {
  echo 'Error: ' . $e->getMessage();
}

现在,我想将上面的unique_id传递给ajax页面但是不能。

echo $unique_id;

它不会提醒任何人,但是:

$abc="123";
echo $abc;

这会显示值为123的警告框!

为什么会这样?为什么我会像这样传递unique_id值?

我的整篇PHP脚本:

<?php
//Function to check if the request is an AJAX request
if (is_ajax()) {
  if (isset($_POST["action"]) && !empty($_POST["action"])) { //Checks if action value exists
    $action = $_POST["action"];
    switch($action) { //Switch case for value of action
      case "test": test_function(); break;
    }
  }
}

//Function to check if the request is an AJAX request
function is_ajax() {
  return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest';
}

function test_function(){

include($_SERVER['DOCUMENT_ROOT'].'/config.php');
$return = $_POST;

  $return["json"] = json_encode($return);

  //below code to store in database 
  $data = json_decode($return["json"], true);




  /*....salting starts........*/


  /*..........salting ends..............*/

echo $unique_id=uniqid();

$name=$data['name'];
$phone=$data['phone'];
$email=$data['email'];
$postcode=$data['postcode'];

$a=$data['sub'];
$b=$data['rate2'];
$subject_rate = array_intersect_key($b,$a);

  /*...pdo.............................*/
  $username="root";
  $password="";

  try {
  //$pdo = new PDO('mysql:host=localhost;dbname=users', $username, $password);
  //$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  include($_SERVER['DOCUMENT_ROOT'].'/config.php');
  $stmt = $pdo->prepare('INSERT INTO authsessions (email,useruuid,salt,hashpword)   VALUES(:email,:useruuid,:salt,:hash)');
  $stmt->execute(array(
    ':email' => $email,
    ':useruuid'=>$unique_id,
    ':salt'=>$salt,
    ':hash'=>$hash
  ));

  # Affected Rows?
   $stmt->rowCount(); // 1
} catch(PDOException $e) {
   'Error: ' . $e->getMessage();
}

//query2
try
{
$stmt2 = $pdo->prepare('INSERT INTO usrinfo (UUID,Name,Phone,Email,Postcode,DateReg,Reputation,ReviewPlus,ReviewNeg,Sex,Status,IsTuitionCentre) VALUES(:uuid,:name,:phone,:email,:poscode,now(),:reputation,:reviewplus,:reviewneg,:sex,:status,:permission)');
  $stmt2->execute(array(
    ':uuid' => $unique_id,
    ':name'=>$name,
    ':phone'=>$phone,
    ':email'=>$email,
    ':poscode'=>$postcode,
    ':reputation'=>78,
    ':reviewplus'=>65,
    ':reviewneg'=>3,
    ':sex'=>$gender,
    ':status'=>0,
    ':permission'=>$permission
  ));

  # Affected Rows?
   $stmt2->rowCount(); // 1
} catch(PDOException $e) {
   'Error: ' . $e->getMessage();
}

//query3
try
{
$stmt3 = $pdo->prepare('INSERT INTO tutoravailability (uuid,week_morning,week_afternoon,week_evening,weekend_morning,weekend_afternoon,weekend_evening) VALUES(:uuid,:week_morning,:week_afternoon,:week_evening,:weekend_morning,:weekend_afternoon,:weekend_evening)');
  $stmt3->execute(array(
    ':uuid' => $unique_id,
    ':week_morning'=>$week_morning,
    ':week_afternoon'=>$week_afternoon,
    ':week_evening'=>$week_evening,
    ':weekend_morning'=>$weekend_morning,
    ':weekend_afternoon'=>$weekend_afternoon,
    ':weekend_evening'=>$weekend_evening
  ));
  # Affected Rows?
   $stmt3->rowCount(); // 1
} catch(PDOException $e) {
   'Error: ' . $e->getMessage();
}

//query4

foreach($subject_rate as $v=>$k) 
  {

      $key=$v;
      $value=$k;

      $post_unique_id=  uniqid();


      try
{
$stmt4 = $pdo->prepare('INSERT INTO posts (PostUUID,subid,date,pricing,post_status,UUID,Name,Phone,Email,Poscode,DateReg,Reputation,ReviewPlus,ReviewNeg,Sex,week_morning,week_afternoon,week_evening,weekend_morning,weekend_afternoon,weekend_evening,Status) VALUES(:PostUUID,:subid,now(),:pricing,:post_status,:UUID,:Name,:Phone,:Email,:Poscode,now(),:Reputation,:ReviewPlus,:ReviewNeg,:Sex,:week_morning,:week_afternoon,:week_evening,:weekend_morning,:weekend_afternoon,:weekend_evening,:Status)');
  $stmt4->execute(array(
    ':PostUUID' => $post_unique_id,
    ':subid'=>$key,
    ':pricing'=>$value,
    ':post_status'=>1,
    ':UUID'=>$unique_id,
    ':Name'=>$name,
    ':Phone'=>$phone,
    ':Email' =>$email,
    ':Poscode'=>$postcode,
    ':Reputation'=>78,
    ':ReviewPlus'=>65,
    ':ReviewNeg'=>3,
    ':Sex'=>$gender,
    ':week_morning'=>$week_morning,
    ':week_afternoon'=>$week_afternoon,
    ':week_evening'=>$week_evening,
    ':weekend_morning'=>$weekend_morning,
    ':weekend_afternoon'=>$weekend_afternoon,
    ':weekend_evening'=>$weekend_evening,
    ':Status'=>0
  ));

  # Affected Rows?
   $stmt4->rowCount(); // 1
} catch(PDOException $e) {
   'Error: ' . $e->getMessage();
}
  }

/*try
{
$sql = "SELECT *FROM authsessions WHERE useruuid =:uid";

$statement = $pdo->prepare($sql);
$statement->bindValue(':uid', $unique_id);
$statement->execute();

$json = array();

while( $row = $statement->fetch()) {
array_push($json, array("id" => $row['useruuid']));}
header('Content-Type: application/json');
echo json_encode($json);

} catch(PDOException $e) {
  echo 'Error: ' . $e->getMessage();
}*/

// $unique_id=uniqid();
}
?>

1 个答案:

答案 0 :(得分:1)

您需要使用delete,因为AJAX调用显示json_encode

dataType: "json"

当你回显echo json_encode($unique_id); 时它起作用,因为十进制数是有效的JSON。但123返回十六进制字符串,这不是有效的JSON。你需要用它周围的引号对它进行编码。