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');
}
}