Dojo1.8 - 请求没有任何输入的php文件

时间:2013-02-19 08:27:25

标签: php dojo pdo

  1. 我很难请求php文件在没有任何输入的情况下进行处理。 我在login.php中使用PDO 我得到的错误是“无法加载processing.php,状态:500”。
  2. main.php: -

    <head>
        <?php require_once '../scripts/login.php';?> //require action
    <head>
    <body>
    <div id='line1'></div>
    
    require(["dojo/request","dojo/domReady!"],                      
    function(request)
    {ready(function()
        {request('processing.php').then( //request action
         function(response){dom.byId(line1).innerHTML=response;},
         function(error){alert(error);
     });
        ......
    </body>
    

    processing.php: -

    <?php
        echo "By default, fetch mk7BC data<br/>";
    echo 
    "<table border='1' cellspacing='0' cellpadding='2'>
    <tr style='background-color:lightblue; font-weight:normal; font-size:small;'>
        <th style='width:40px'>ID</th>
        <th style='width:80px'>SN</th>
        <th style='width:100px'>Tested</th>
        <th style='width:40px'>Jig</th>
        <th style='width:80px'>Card</th>
        <th style='width:40px'>Batch</th>
        <th style='width:40px'>COM</th>
        <th style='width:40px'>3rdCOM</th>
        <th style='width:40px'>IO34</th>
        <th style='width:40px'>Comment</th>
    </tr>";
        try
        (
            $dbh-> query('use testdata1970_10');
        $color='1';     
            foreach($dbh->query('call getallusers();') as $row)
            {if($color==1)
        {echo "<tr style='background-color:lightyellow; font-weight:lighter; 
                font-size:x-small;'>";
        $color='2';
            }
        else
                {echo"<tr style='background-color:lightgreen; font-weight:lighter;
                font-size:x-small;'>";
        $color='1';
        }
    
            echo
            "<td>{$row['idtest']}</td>
            <td>{$row['SN']}</td>
            <td>{$row['time_tested']}</td>
            <td>{$row['id_jig']}</td>
            <td>{$row['mfg_code']}</td>
            <td>{$row['batch_no']}</td>
            <td>{$row['com_status']}</td>
            <td>{$row['3rdcom_status']}</td>
            <td>{$row['IO34_status']}</td>
            <td>{$row['comment']}</td>
            </tr>";
                }
         echo "</table>";
        )
     ?>
    

    的login.php: -

        <?php
             dbname=testdata1970_10;
         $dsn = 'mysql:host=localhost; Port=3306';
         $user = 'root';
         $pswd = '';
         $dbh = new PDO($dsn, $user, $pswd,
             array(PDO::ATTR_PERSISTENT, TRUE));
             $dbh->setAttribute(PDO::ATTR_ERRMODE, 
             PDO::ERRMODE_EXCEPTION);
         $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
     ?>
    

    请指教谢谢  克莱门特

2 个答案:

答案 0 :(得分:0)

Stackoverflow特别适用于“我如何做X?”的问题。对于“这是我的所有代码,帮助我找到错误!”并不是很好。您需要努力自己找到问题,然后提出具体问题。

例如,你的Javascript有问题吗?或者你的PHP有问题吗?你的SQL可能有问题吗?

在这种情况下,您说打开processing.php会返回错误500.这意味着该错误可能与您的Javascript没有任何关系。相反,它可能是您的Web服务器在运行PHP脚本时遇到问题。

processing.php会出现什么问题?它有任何语法错误吗?当您在浏览器中打开processing.php时,您可能会收到一条带有一些线索的错误消息。或者您的文本编辑器可能突出显示错如果没有,请尝试运行

php -l processing.php

这会检查您的文件是否存在语法错误。你可能会得到类似的东西:

PHP Parse error:  syntax error, unexpected '(', expecting '{' on line 18

您似乎需要在第18行用(替换{

所以你再次修复php -l,你在第47行看到同样的错误(几乎)。解决这个问题。重复。看起来你的try没有相应的catch!修复它。重复。

最后,也许你还有问题 - 但现在你已经努力找到问题,你可以提出一个更好的问题。

例如,processing.php中的$ dbh来自哪里?你是否将login.php包含在processing.php的顶部?

答案 1 :(得分:0)

感谢您的投入。现在一切都奏效了。 $ dbh来自login.php,我在main.php和processing.php中的require_once login.php。但是,我不明白为什么login.php需要在processing.php中再次被require_once,因为login.php中的脚本可用于main.php中的所有脚本。由于$ dbh在login.php中属于全局范围,而login.php是require_once,因此我需要main.php中的require_once login.php,而不是processing.php。 例如;

login.php - <?php $dbh="blah"?>
main.php - <?php require_once login.php?>
A.php - <?php $dbh... ?>
B.php - <?php $dbh... ?>
C.php - <?php $dbh... ?> 

等等。我只想让login.php一劳永逸,不要在每个脚本中重复require_once。我读到“当包含一个文件时,它包含的代码继承了包含发生的行的变量范围。调用文件中该行可用的任何变量都将在被调用文件中可用,从那时起。 “在PHP.net中。如果我错了,请纠正。谢谢Clement