JSON变量未传递给ajax函数

时间:2015-12-05 18:24:34

标签: json ajax

这是Ajax代码。我使用这个ajax代码将细节传递给php页面,php文件应该返回一个数组值为true或false,具体取决于条件。我使用过json_encode但它似乎无法正常工作

 $.ajax({
      url: "join_form.php",
      type: "POST",
      dataType: 'json',
      data: {
        name: name,
        email: email,
        contact: contact,
        role: role,
        dialcode: dialcode,
        countrycode: countrycode
      },
      cache: false,
      // var data = JSON.parse(data);
      success: function(data) {
      data = $.parseJSON(data);
      console.log(data);
      if(data.status == 'false')
      {
        alert("Something went wrong");
      }
      else
      {
        alert("Message submitted successfully");
        $("#joinForm").trigger("reset");
      }
            // alert(dialcode+countrycode);


        }

        });
    $("#joinForm").trigger("reset");

  });

这是Php文件(join_form.php)。 此php文件检查字段的有效性并存储错误值  在里面 我使用json_encode函数的数组,以便它可以  被送回ajax。但返回时没有任何反应。  它显示空白功能。  if else函数未执行。请帮忙

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "kites";
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
    alert("Connection failed");
}
else
{
$response = array();
// Check for empty fields
if(
      empty($_POST['name'])     || 
      empty($_POST['email'])    ||
      empty($_POST['contact'])  ||
      empty($_POST['role']) ||
      empty($_POST['dialcode']) ||
      empty($_POST['countrycode'])  
   )

{
  echo "No arguments Provided!";
  $response['status']='false';
}

else{
   $name = $_POST['name'];
   $email = $_POST['email'];
   $contact = $_POST['contact'];
   $role = $_POST['role'];
   $dialcode = $_POST['dialcode'];
   $countrycode = $_POST['countrycode'];

$stmt = $this->conn->prepare("SELECT email from join_form WHERE email = ?");

        $stmt->bind_param("s", $email);

        $stmt->execute();

        $stmt->store_result();

        if ($stmt->num_rows > 0) {
            // user existed 
            // $stmt->close();
            $response['status'] = 'false';
        } else {
            // user not existed
            // $stmt->close();
            $response['status'] = 'true';
        }
header("Content-Type: application/json; charset=utf-8", true);
echo json_encode($response);



$sql = "INSERT INTO join_form (name,email,contact,role,dialcode,countrycode)
VALUES ('$name','$email','$contact','$role','$dialcode','$countrycode')";




 if (mysqli_query($conn, $sql)) {
       $response['status'] = 'true';
} 
else {    
    echo "Please do it again";
    $response['status'] = 'false';
    // echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
    header("Content-Type: application/json; charset=utf-8", true);
  echo json_encode($response);

}
}     
?>

1 个答案:

答案 0 :(得分:-1)

从你的php中删除所有不需要的回声,并且只保留最后一个&#39; echo json_encode($ response);&#39;。

您不需要在ajax调用中解析返回的响应。所以你将获得你的状态,你可以用它做点什么。

或者,如果您还要回复正在回复的消息,则可以执行以下操作:

$response['status'] = 'false';
$response['message'] = 'No arguments Provided!';

echo json_encode(response).

而不是你的ajax电话回复:

if(data.status == 'false')
  {
    alert(data.message);
  }
}

注意:从您的php中删除“HEADER”,您也不需要这样做。在ajax调用中,您已设置&#39; data-type = json&#39;这就足够了。数据将自动与适当的标题一起发回!

您正在将变量传递给您的数据:

data: {
        name: name,
        email: email,
        contact: contact,
        role: role,
        dialcode: dialcode,
        countrycode: countrycode
      },

从哪里获得这些价值观? 如果他们来自表格,您需要参考他们:

var name = $('#name').val()
... and so on.

也许你已经这样做但是你没有发布完整的代码,以便让我发现你的问题。顺便说一下,在你将完整的代码发布到这里之前,先将答案投下来,但这并不是真的有帮助。

如果你也没有发布你的HTML,我就看不到了。

注意:您的答案是“没有任何效果&#39;没有真正帮助,你没有提到你最终收到的错误,所以我仍然需要猜测。