从PHP中获取Javascript的值

时间:2015-04-18 08:06:31

标签: javascript php html

我对网络编程不是很有经验,并且我正在尝试运行更新数据库的脚本。

            <script>
            function myFunction() {
                var texts = document.getElementById("content").textContent;
                alert(texts)
                <?php
                    include_once 'accounts/config.php';
                    $text = ...;
                    $tbl_name='enemies'; // Table name 
                    $query = "UPDATE enemies SET text=('$text') WHERE id=1";
                    $result = mysql_query($query) or die(mysql_error());
                ?>
            }
            </script>

我不知道要放在$ text部分中的内容如$text = ...;所示,以便从上面获取变量文本。

修改

我已经更新了我的代码,但该函数似乎没有访问PHP文件。我正在使用一个按钮来调用该函数,我也测试了它,所以我知道正在调用该函数。我的文件名为update.php,与此文件位于同一目录中。

            <button onclick="myFunction()">Click This</button>

        <script>
        function myFunction() {
            var texts = document.getElementById("content").textContent;
            $.ajax({
                url: "update.php",
                type: "POST",
                data: {texts:texts},
                success: function(response){
                }
            });
        }
        </script>

4 个答案:

答案 0 :(得分:1)

你可以使用ajax将你的$texts值发布到其他php页面,并使用$_POST['texts']在php页面上获取变量,并在那里放置更新查询并享受....

function myFunction() {
                    var texts = document.getElementById("content").textContent;

    $.ajax({
            url: 'update.php',
            type: "POST",
            data: {texts:texts},
            success: function(response)
            {


            }
        });

您的php文件将命名为update.php

<?php
                include_once 'accounts/config.php';
                $text =$_POST['texts'];
                $tbl_name='enemies'; // Table name 
                $query = "UPDATE `enemies` SET `text`='".$text."' WHERE `id`=1";
                $result = mysql_query($query) or die(mysql_error());
            ?>

答案 1 :(得分:0)

你的做法是错误的

您应该使用ajax发布文本&#39;你的PHP脚本的价值 https://api.jquery.com/jquery.post/并创建单独的php文件,您将从ajax发布数据并更新数据库

的javascript:

<script>
    function myFunction() {
       var texts = document.getElementById("content").textContent;

       $.ajax({
          type: "POST",
          url: "update.php",
          data: "texsts=" + texts,
          success: success
        });
        }
</script>

update.php

 <?php
                    include_once 'accounts/config.php';
                    $text = $_POST['texts'];
                    $tbl_name='enemies'; // Table name 
                    $query = "UPDATE enemies SET text=('$text') WHERE id=1";
                    $result = mysql_query($query) or die(mysql_error());
                ?>

答案 2 :(得分:0)

PHP在服务器上运行,然后生成输出,然后返回到客户端。你不能让JavaScript函数调用内联PHP,因为PHP在JavaScript传递到客户端之前运行。

相反,您需要做的是让您的函数向服务器端PHP脚本发出AJAX请求,然后从请求正文中提取数据,然后将其存储在数据库中。

PHP:“/ yourPhpScript.php”

<?php 
include_once 'accounts/config.php';
$text = $_POST['data'];
$tbl_name='enemies'; // Table name 
$query = "UPDATE enemies SET text='".$text.'" WHERE id=1";
$result = mysql_query($query) or die(mysql_error());
?>

<强> JavaScript的:

function myFunction() {
    var texts = document.getElementById("content").textContent;
    alert(texts);

    // append data as a query string
    var params = 'data='+texts;
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function() {
        // when server responds, output any response, if applicable
        if(http.readyState == 4 && http.status == 200) {
            alert(http.responseText);
        }
    }

    // replace with the filename of your PHP script that will do the update.
    var url = '/yourPhpScript.php';
    xmlhttp.open("POST", url, true);
    xmlhttp.send(params);
}

提醒:这不是一种安全,生产友好的方式来更新数据库中的数据。此代码对SQL注入攻击开放,这超出了您的问题的范围。如果您要编写将投入生产的代码,请参阅Bobby Tables: A guide to preventing SQL injection

答案 3 :(得分:-2)

如果我是你,我将使用PDO,你做了什么mysql_query已经过时,如果你使用我的框架https://github.com/parisnakitakejser/PinkCowFramework,你可以执行以下代码。

<?php
include('config.php');

$text = $_POST['text'];

$query = PinkCow\Database::prepare("UPDATE enemies SET text = :text WHERE id = 1");
$bindparam = array(
    array('text', $text, 'str')
);
PinkCow\Database::exec($query,$bindparam);

$jsonArray = array(
    'status' => 200
);
echo json_encode($jsonArray);
?>

将此代码放在jsonUpdateEnemies.php文件中,并将其命名为width jQuery

<script>
function myFunction(yourText) {
    $.post( 'jsonUpdateEnemies.php', {
        'text' : yourText
    }, function(data)
    {
        alert('Data updated');
    },'json');
}
</script>

它比你问的要复杂得多,但是它将如何解决你的问题,:))