将变量从php文件返回到ajax

时间:2015-08-08 22:41:18

标签: php ajax variables return

我发现解决这个问题有些困难。我想要做的是将从数据库中选择的变量传递给javascript函数。

在这一行$('.form-container a.startStampleDiv').click(function(),我正在尝试使用旧数据库中的选定数据启动对数据库的新查询。所以我需要的是将选定的costumerId从数据库返回到ajax,以便我可以通过它。我希望你们能理解我的问题并试着帮助我。

注意:这段代码对我有用,唯一缺少的是将变量从php返回到ajax。

这是js代码:

$('#searchCostumer-btn').click(function(){
var phonenumber = $('#phonenumber').val();
var phonenumberReg = /^[\s()+-]*([0-9][\s()+-]*){6,20}$/;
var phonenumberError = Boolean(true);

if (phonenumber==""){
    $('#phonenumber').css("border", "1px solid red");
    phonenumberError= false;
}
else if(!phonenumberReg.test(phonenumber)){
    $('#phonenumber').css("border", "1px solid red");
    phonenumberError= false;
}
else{
    $('#phonenumber').css("border", "1px solid white");
}
if(phonenumberError===true){
    $.ajax({
        type:'POST',
        data:{phonenumber: phonenumber},
        url: 'php/searchCostumer.php',
        fail: function(data){
            alert('An internal Error has been occured please contact adminstrator.');
        },
        success: function(data){
            document.getElementById("search-Costumer").reset();
            $('#search-result').html(data);



            // Event handlar click on costumer
            $('.form-container a.startStampleDiv').click(function(){
                document.getElementById('stample-container').style.display = 'block';
                // here i want to pass the costumerID to another php file or code. So what i need to do is to pass the costumerId that is returned by the php file...


            });  
        }
    });
}

});

这是php代码:

<?php
ob_start();
session_start();
include("figaroStampledb.php");

if(isset($_POST['phonenumber']))
{
    $phonenumber = trim(htmlentities($_POST['phonenumber']));

    try {
        $con = new PDO("mysql:host=$sql_login_host;dbname=$sql_login_db", $sql_login_user, $sql_login_pass);

        $selectCostumers = $con->prepare("SELECT * FROM fCostumers WHERE phonenumber=:phonenumber");
        $selectCostumers ->execute(array(':phonenumber' => $phonenumber));
        $resultCostumers = $selectCostumers->fetchAll(PDO::FETCH_ASSOC);

        print json_encode($resultCostumers);

        $count=$selectCostumers->rowCount();

        if($count>0){
            print '<script src="js/validation.js" type="text/javascript"></script>';
            foreach ($resultCostumers as $costumer)
            {                   
                print '<div><i class="glyphicon glyphicon-user"> </i><a href="#stample-container" class="startStampleDiv">' ." " .$costumer['firstname'].'</a></div><hr>';
                //$_SESSION['$costumerId'] = $costumer['id'];
            }
        }
        else{
            print'Kunden är icke registrerad';
        }
    }
    catch(PDOException $e) {
        trigger_error('Error occured while trying to insert into the DB:' . $e->getMessage(), E_USER_ERROR);
    }
}

&GT;

1 个答案:

答案 0 :(得分:1)

您可以在php脚本中添加此行以及print语句。

<input type="hidden" id="custmid" value="$your_custmerid_variable">

所以ajax响应也会在html中添加它但是它不会对html进行任何更改,因为它隐藏了..

比使用$(“#custmid”)提到的值更有价值.value();并进一步发送到你想要使用另一个ajax请求的php页面....希望你会弄清楚如何做到这一点......