【问题标题】:c9 - How to run php function from script tag?c9 - 如何从脚本标签运行 php 函数?
【发布时间】:2015-10-25 18:06:52
【问题描述】:

我使用云 9 平台。 我有几个函数调用 phpFunctions.php 的 php 文件:

<?php
 $servername = "127.0.0.1";
 $username = "oshrat";
 $password = "";
 $database = "myDB";
 $dbport = 3306;

// Create connection
//$conn = new mysqli($servername, $username, $password);
$conn = new mysqli($servername, $username, $password, $database, $dbport);

// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
} 
// echo "Connected successfully";
mysql_select_db("myDB",$conn);

function createNewUser() {
 echo "Hello world!";
}

function checkUser($name) {
 echo "Hello world!";
}
?>

从表单中我有一个按钮,当 onclick 事件发生时,我需要运行函数 checkUser。

login.php 文件:

<html lang="en-us">

<head>
<meta charset="utf-8">
<?php include_once 'phpFunctions.php';?>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js">    </script>
</head>

<body>
<div  style="float:left; margin-right:45px;">            
    <button id="startButton" class="controlButtons" type="button"     target="framework" style="margin-left:30vw;">Go To Play</button>
</div>
</body>
<script type="text/javascript">
     $("#startButton").click(function(){
        var p1Name = $("#namePlayer1").val();
        var p2Name = $("#namePlayer2").val();
        //check if the two players enter the name
        if(p1Name == "" || p2Name == "")
        {
            alert("You Must Enter Two Players Name");
        }
            else 
            {
            var result = "";
            jQuery.ajax({
                type: "POST",
                url: 'phpFunctions.php',
                dataType: 'json',
                data: {functionname: 'checkUser'},
        success: function (obj, textstatus) {
                if( !('error' in obj) ) {
                            //   result = obj.result;
                              alert("success");
                          }
                          else {
                            //   console.log(obj.error);
                            alert("error");
                          }
                    }
        });
                   }
    }
});

    </script>
</html>

ajax 调用不工作。 提前感谢您的帮助。

【问题讨论】:

  • 首先在浏览器开发工具网络中检查实际请求以寻找线索
  • parent.modeGame == 1 这是什么,请删除此代码。

标签: javascript php jquery ajax cloud9-ide


【解决方案1】:

试试这个:

<html lang="en-us">

<head>
<meta charset="utf-8">
<?php include_once 'phpFunctions.php';?>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js">    </script>
</head>

<body>
<div  style="float:left; margin-right:45px;">            
    <button id="startButton" class="controlButtons" type="button"     target="framework" style="margin-left:30vw;">Go To Play</button>
</div>
</body>
<script type="text/javascript">
     $("#startButton").click(function(){
    //two players mode
     //if(parent.modeGame == 1)
    //{

        console.log(parent.modeGame, $("#namePlayer1").val(), $("#namePlayer2").val()); //this will probably log undefined 3 times...
        /*var p1Name = $("#namePlayer1").val();
        var p2Name = $("#namePlayer2").val();
        //check if the two players enter the name
        if (p1Name == "" || p2Name == "") {
            alert("You Must Enter Two Players Name");
        }
        else 
        {*/
            $.post('phpFunctions.php', {functionname: 'checkUser'}).done(function(data) {
                console.log(data);
            }).fail(function(err) {
                console.log(err);
            });
       // }
    //}
});

    </script>
</html>

您的 if 语句似乎使您的 ajax 调用无法运行。我已经为您注释掉了它们,您可以使用console.log 查看它们的值。我还将您的 ajax 调用更改为更简洁的 post 函数

然后像这样更改你的 php 文件:

<?php
 $servername = "127.0.0.1";
 $username = "oshrat";
 $password = "";
 $database = "myDB";
 $dbport = 3306;

// Create connection
//$conn = new mysqli($servername, $username, $password);
$conn = new mysqli($servername, $username, $password, $database, $dbport);

// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
} 
// echo "Connected successfully";
mysql_select_db("myDB",$conn);

if ($_POST["functionname"] == "checkUser") {
    checkUser("sample name"); //replace sample name with $_POST['name'] or something like that when you want to actually check a name
}

function createNewUser() {
 echo "Hello world!";
}

function checkUser($name) {
 echo "User ".$name." checked";
}
?>

【讨论】:

  • 我得到这个数据:“”。我更改了函数,现在它返回“Hello world!”而是回显“Hello world!” - 数据仍然是“”
  • TNX!如果我想从数据库返回数据怎么办?我需要使用 JSON 吗?
  • 是的。您可以执行echo json_encode($array); - 您可以使用 fetch assoc 函数将您的数据库数据转换为数组。然后使用javascript,您可以在done(function(data) { ... }) 实现中使用JSON.parse(data)
猜你喜欢
  • 1970-01-01
  • 2014-10-13
  • 2012-03-14
  • 2018-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多