如何通过ajax用post类型间接调用php文件并获取json返回然后将其解析为表

时间:2014-08-09 03:26:48

标签: php ajax json

我有2个php文件,一个是" Db_function.php"和" index.php"," index.php"将在" Db_function.php"中进行函数调用。 我想打电话给" index.php"通过ajax,这是我的代码

Html文件

<Html>
  <body>
      <script type="text/javascript" src="js/index.js"></script>
      <input type="button" value="Get" onclick="get()">
  </body>
</html> 

Js文件

function get() {
    $.ajax({ url: 'index.php',
             data: {tag:'get_backup', email:'mail@mail.com', password:'123'},
             type: 'post',
             datatype:'json'
             success: function(output) {
                          alert(output);
                      }
    });
}

的index.php

/*with connect value*/
if ($tag == 'get_backup'){
            // store user
              $email = $_POST['email'];
              $password = $_POST['password'];

            $user = $db->get_backup($email, $password);

Db_funtion.php

public function get_backup($email, $password) {
        $result = mysql_query("SELECT * FROM users WHERE email = '$email'") or die(mysql_error());
        // check for result 
        $no_of_rows = mysql_num_rows($result);
        if ($no_of_rows > 0) {
            $result = mysql_fetch_array($result);
            $salt = $result['salt'];
            $encrypted_password = $result['encrypted_password'];
            $hash = $this->checkhashSSHA($salt, $password);
            // check for password equality
            if ($encrypted_password == $hash) {
                // user authentication details are correct
                $response = array();
                $result2 = mysql_query("SELECT * FROM contact_store WHERE (email ='$email' AND backup_name='$email')") or die(mysql_error());
                if (mysql_num_rows($result2) > 0) {
    // looping through all results
    // contact_stores node
    $response["contact_stores"] = array();
  while ($row = mysql_fetch_array($result2)) {
        // temp user array
        $contact_store = array();
        $contact_store["backup_name"] = $row["backup_name"];
        $contact_store["email"] = $row["email"];
        $contact_store["data"] = $row["data"];
        // push single contact_store into final response array
        array_push($response["contact_stores"], $contact_store);
    }
   // success
    $response["success"] = 1;
    // echoing JSON response
    echo json_encode($response);
} else {
    // no contact_stores found
    $response["success"] = 0;
    $response["message"] = "No contact_stores found";
    // echo no users JSON
    echo json_encode($response);
}

            }
        } else {
            // user not found
            return false;
        }
    }

Json像这样回归

{"contact_stores":[{"backup_name":"nhi@gmail.com","email":"nhi@gmail.com","data":"[]"}],"success":1}

但我的问题是当我在html文件中按下get按钮时,没有任何反应。 对我有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

您似乎没有定义在input元素中提供的get()函数。

试试这个HTML:

<input id="get" type="button" value="Get">

使用此javascript:

$('#get').click(function() {
    $.ajax({ url: 'index.php',
        data: {tag:'get_backup', email:'mail@mail.com', password:'123'},
        type: 'post',
        datatype:'json'
        success: function(output) {
            alert(output);
        }
    })
});