首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ajax调用在php中不能正常工作

ajax调用在php中不能正常工作
EN

Stack Overflow用户
提问于 2015-03-10 09:32:22
回答 1查看 86关注 0票数 0

在下面的代码中,我将ipdno作为param传递,然后从服务器获得响应,因为这是我的代码。

php

代码语言:javascript
复制
$('#print').click(function(){
            var ipdNo = $('#hid_ipd_id').val();         
            var param = "ipdNo="+ipdNo;
            alert("Param: "+param);
            $.ajax({
                url: "ipd_bill_print.php", //The url where the server req would we made.
                async: true,
                type: "POST", //The type which you want to use: GET/POST
                data: param, //The variables which are going.
                dataType: "html",
                success: function(data){
                    //alert("Result: "+data+"\nRefreshing page... ");   
                    if(data=='success'){
                        alert("Record updated succcessfully!");
                        location.reload(true);
                    }else{
                        alert("Record could not be updated!");
                    }
                }
            });

        });

在这段代码中,我希望在有一些行时表示成功,否则它应该表示失败。

ipd_bill_print.php

代码语言:javascript
复制
<?php
    require_once("db/include.php");

    $ipd_no = $_POST['ipd_no'];
    $token = "Empty";

    try{
        $dbh = getConnection();
        $flag = true;


        $sql = "SELECT ipd_reg_no 
                    FROM  ipd_bill 
                    WHERE ipd_reg_no = ?";
        $sth = $dbh->prepare($sql);
        $sth->bindParam(1,$ipd_no);
        $row = $sth->fetch(PDO::FETCH_ASSOC);
        echo $row;
        if($row >==0)
            $flag = false;
        if($flag)
            echo "success";
        else{
            $dbh->rollback();
            echo "fail";
        }
        //echo "\n FLAG: $flag \n";
        $dbh->commit(); 

    }catch(PDOException $e){
        print($e);
        try{
            $dbh->rollback();
        }catch(PDOException $e){
            die($e->getMessage());  
        }
    }
    else{   //if ends here..
        echo "Outside if...";
}
EN

回答 1

Stack Overflow用户

发布于 2015-03-10 13:44:26

在JavaScript代码中,您提供了ipdNo作为AJAX参数,但是在PHP文件中,您尝试通过$_POST访问名为ipd_no的未定义密钥。我还建议将AJAX dataType"html"更改为"text",因为您只是在重复PHP中的一些纯文本。

在PHP文件中,为了使用PDO::commitPDO::rollBack,您需要首先调用PDO::beginTransaction

在调用PDOStatement::fetch之前,您需要通过PDOStatement::execute执行语句。

if语句中,需要将$row >==0的语法错误语句更改为类似$row!==false && count($row)>0的语句。最后,考虑到您没有任何匹配的if语句用于您的最后一个else语句,但是您在其中注释了//if ends here..;在您的代码片段中可能看不到它。

此外,最好始终检查任何方法调用或函数调用的返回结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28960149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档