我有一个包含一组超链接的页面。点击任何超链接都应该将用户带到一个新的页面,其中url作为POST
数据发送。
我能做的:
1. 打开新的一页
我所面临的问题:
1. 在新页面中,我试图访问作为数据发送的url。url不可见。我哪里做错了?
目前为止的代码:
<html>
<head>
<title></title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
function takeMeHome(obj) {
var URL = obj.getAttribute("href");
//alert("Url = " + URL + " with id = " + obj.id);
console.log("URL = " + URL);
$.ajax({
type: 'POST',
url: './bbCloud.php',
data: {'tgt_url': URL},
success:function(data) {
console.log("Function invoked. It seems posting data was a success");
window.location = URL;
//alert('This was sent back: ' + data);
}
});
return false;
}
</script>
</head>
<body>
<p>
Choose one of the links below to access content:</p>
<p><a href="./bbCloud.php" id="link1" onclick="takeMeHome(this); return false;">1. Email Etiquette</a></p>
</body>
</html>
bbCloud.php:
<?php
//the function below displays data from bbMainPage javascript.
function getDataFromLibrary() {
$tgt_url = $_POST["tgt_url"];
echo "Data received = " . $tgt_url . "<br/>";
return $tgt_url;
}
?>
<html>
<head>
<style>
.hlight{background-color:#ffcc00;}
textarea {
width:100%;
height:100%;
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript" src="http://myDomain/tinymce/jscripts/tiny_mce/tiny_mce.js"></script>
<script type="text/javascript">
//mention all global variables here.
console.log("this is the start of javascript");
//get all data from the previous script.
var tgtURL = "<?php getDataFromLibrary(); ?>";
console.log("URl obtained = " + tgtURL);
</script>
<body>
<div>
<audio id="playText" src="" controls></audio>
</div>
</body>
</html>
尝试动态创建和提交表单,而不是尝试使用ajax:
<script type="text/javascript">
function takeMeHome(obj) {
var URL = obj.getAttribute("href");
$('<form>', {
"html": '<input type="text" name="tgt_url" value="' + URL + '" />',
"action": URL
}).appendTo(document.body).submit();
}
</script>
嗯,如果我没有记错的话,正在发生的事情是您的$.ajax
确实将POST数据发送到php文件。问题是,它发送post数据,php文件被执行,响应被发送回来,但它被发送回$.ajax
调用本身。然后重定向到php文件(从而再次运行它),但是没有post数据。此外,沿着$.('a').click(function(event) { event.preventDefault(); }
的路线可能是一个好主意。我回家后会尽量给你一个更好的答案(现在正在打电话,应该不会太久)。