Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法访问AJAX数据[PHP]_Javascript_Php_Mysql_Ajax_.htaccess - Fatal编程技术网

Javascript 无法访问AJAX数据[PHP]

Javascript 无法访问AJAX数据[PHP],javascript,php,mysql,ajax,.htaccess,Javascript,Php,Mysql,Ajax,.htaccess,我主页上的一个表单(index.php)在提交后会在一个新选项卡中打开一个随机生成的URL。该随机url正在运行一个名为run.php <form action="/run.php" method="POST" target="_blank"> <input type="hidden" id="idgen" name="idgen" value="<?php echo $random ?>"> <input type="text" nam

我主页上的一个表单(
index.php
)在提交后会在一个新选项卡中打开一个随机生成的URL。该随机url正在运行一个名为
run.php

<form action="/run.php" method="POST" target="_blank">
    <input type="hidden" id="idgen" name="idgen" value="<?php echo $random ?>">
    <input type="text" name="userinput" id="userinput">
    <button type="submit" onclick="calcResult();">Go!</button>
</form>
我将
添加到
run.php
文件中(表单打开的随机url正在运行
run.php

console.log(响应)
显示它正在工作。它的控制台记录整个
example.com/
源代码(显示整个
run.php
代码),甚至用“Hello”替换

但是,这只在控制台中起作用。当表单打开该网页时,不会显示“Hello”

我有一个MySQL数据库,在run.php文件中插入值。我试着为
$\u POST['result']做同样的事情
使用上述代码时没有控制台错误,错误日志中也没有任何致命错误

额外信息

  • 表单提交到
    run.php
    ,其中包含
    标题('位置:http://example.com/“.$”邮政['idgen']以重定向到随机url
  • 使用htaccess RewriteRule
    RewriteRule^([0-9a-zA-Z]+)$/run.php?idgen=$1[L]
  • 尝试使用“Flight”框架,但在尝试使用JS函数时遇到问题
目标

  • 总体目标是将结果(从我的主页上的JavaScript函数获得)发送到PHP。这样,它们将显示在表单提交后打开的随机url上,以便我可以显示它们,将它们添加到数据库中等

您可以尝试JavaScript的windows.location并传递您的值,而不是头位置。

在php中,您可以回显要重定向到的URL

echo 'http://example.com/' . $_POST['idgen'];
die();
如果希望php执行重定向,则不应使用Ajax

非ajax方法,您几乎做到了

<form action="run.php" method="POST" target="_blank">
    <input type="hidden" id="idgen" name="idgen" value="<?php echo $random ?>">
    <input type="text" name="userinput" id="userinput">
    <button type="submit">Go!</button>
</form>
更新

/* RUN.PHP PAGE - THE PAGE TO RECEIVE THE JAVASCRIPT RESULTS */

<?php

    $endurl = $_POST['idgen']; ?>

    <?php
    if (isset($_POST['userinput'])) {

  // DATABASE LOGIN DETAILS HERE
        $conn = new mysqli($servername, $username, $password, $dbname);

        if ($conn->connect_error) {
            echo 'false';
            die();
            //die("Connection failed: " . $conn->connect_error);

            //Just echo False so Javascript knows what's happening.
        }

        $sql = "INSERT INTO mydatabasename (userinput,randurl)
        VALUES ('$_POST[userinput]','$_POST[idgen]')";

        if ($conn->query($sql) === TRUE) {
            //echo "New record created successfully"; // You cannot echo anything else if you want to do a redirect. Try error_log?
            error_log('New Record Created Successfully');
        } else {
            echo 'false';
            die();
            //echo "Error: " . $sql . "<br>" . $conn->error;
            //let javascript know you failed.

        }

        $conn->close();
           // header('Location: http://example.com/'.$endurl);
           echo 'http://www.example.com/'.$endurl;
           die();
    }
    else if (isset($_GET['idgen'])) {
      // DATABASE LOGIN DETAILS HERE
        $conn = new mysqli($servername, $username, $password, $dbname);

        if ($conn->connect_error) {

            //die("Connection failed: " . $conn->connect_error);
            error_log('Connection Failed:' . $conn->connect_error );
            echo 'false';
            die;
        }

        $sql = "SELECT userinput FROM mydatabasename WHERE randurl = '".$_GET['idgen']."'";

        $result = $conn->query($sql);

        if ($result) {
                if ($row = $result->fetch_array()) {

            }
            $result->close();
      }
      $conn->close();
    }
    ?>
//各种功能

$.ajax({
        type: "POST",
        url: 'http://example.com/' + randomid, // same random url as the form sends to
    data: {
    result: "Hello!",
    userinput: userinput,
    idgen: randomid

    }, // using simple result for testing purposes
    success: function(response){
        if (response != 'false') {
        window.location.replace(response);
        } else {
        alert('error encountered');
        }
   }

}))

我不太明白我是怎么做到的<代码>标题('位置:http://example.com/“.$”邮政['idgen']
run.php
中,不在主页上。好的意思是从ajax中获取的数据显示在控制台中,但不在页面中,对吗?没错。控制台显示了
run.php
中的全部源代码,我显示了来自ajax的数据,但它没有显示在页面上,只显示在控制台上。好的,没问题。在页面中使用一个div,比如$.ajax({type:“POST”,url:''+randomid,//与表单发送到数据的随机url相同:{result:“Hello!”},//使用简单结果进行测试成功:函数(响应){$('#result').html(响应); } });只需获取一个div并给它一个类似于id的结果,然后在ajax$('#result').html(response)的success中编写代码;检查值是否显示在div或not中。我刚刚尝试过,但它试图打开
http://example.com/%20%20%20%20Title%20Goes%20%7C%20HereI 放置
echo'http://example.com/' . $_POST['idgen'];模具()run.php
文件中的code>并删除
标题('位置:http://example.com/“.$”邮政['idgen']?是移除收割台部件。只回显URL。因此,javascript将重定向到您指定的URL。如果仍在执行相同的操作,URL将变为
example.com/[此处的整个run.php源代码]
,并显示“错误请求”您的$\u POST['idgen']未正确填充。现在已经有人住了。请检查您的控制台,确保您的POST值正确。
/* RUN.PHP PAGE - THE PAGE TO RECEIVE THE JAVASCRIPT RESULTS */

<?php

    $endurl = $_POST['idgen']; ?>

    <?php
    if (isset($_POST['userinput'])) {

  // DATABASE LOGIN DETAILS HERE
        $conn = new mysqli($servername, $username, $password, $dbname);

        if ($conn->connect_error) {
            echo 'false';
            die();
            //die("Connection failed: " . $conn->connect_error);

            //Just echo False so Javascript knows what's happening.
        }

        $sql = "INSERT INTO mydatabasename (userinput,randurl)
        VALUES ('$_POST[userinput]','$_POST[idgen]')";

        if ($conn->query($sql) === TRUE) {
            //echo "New record created successfully"; // You cannot echo anything else if you want to do a redirect. Try error_log?
            error_log('New Record Created Successfully');
        } else {
            echo 'false';
            die();
            //echo "Error: " . $sql . "<br>" . $conn->error;
            //let javascript know you failed.

        }

        $conn->close();
           // header('Location: http://example.com/'.$endurl);
           echo 'http://www.example.com/'.$endurl;
           die();
    }
    else if (isset($_GET['idgen'])) {
      // DATABASE LOGIN DETAILS HERE
        $conn = new mysqli($servername, $username, $password, $dbname);

        if ($conn->connect_error) {

            //die("Connection failed: " . $conn->connect_error);
            error_log('Connection Failed:' . $conn->connect_error );
            echo 'false';
            die;
        }

        $sql = "SELECT userinput FROM mydatabasename WHERE randurl = '".$_GET['idgen']."'";

        $result = $conn->query($sql);

        if ($result) {
                if ($row = $result->fetch_array()) {

            }
            $result->close();
      }
      $conn->close();
    }
    ?>
function calcResult() {
  var userinput = document.getElementById('userinput').value;
  var randomid = document.getElementById('idgen').value;
$.ajax({
        type: "POST",
        url: 'http://example.com/' + randomid, // same random url as the form sends to
    data: {
    result: "Hello!",
    userinput: userinput,
    idgen: randomid

    }, // using simple result for testing purposes
    success: function(response){
        if (response != 'false') {
        window.location.replace(response);
        } else {
        alert('error encountered');
        }
   }