我一直试图弄清楚如何在我的情况下使用jsonp,但没有运气。这会计算点击次数,每次点击都会将名称和位置写入txt文件。
<script>
var count1 = 0;
function countClicks1() {
count1 = count1 + 1;
document.getElementById("p1").innerHTML = count1;
}
function doAjax()
$.ajax({
type: "POST",
url: "phpfile.php",
data: "name=name&location=location",
success: function(msg){
alert( "Data Saved: " + msg );
}
});
}
document.write('</p>');
document.write('<button onclick="countClicks1(); doAjax();">Count</button>');
document.write('</p>');
document.write('<p id="p1">0</p>');
</script>
这是php文件phpfile.php
<?php
$name = $_POST['name'];
$location = $_POST['location'];
$myFile = "test.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
fwrite($fh, $name);
fwrite($fh, $location);
fclose($fh);
?>
如果这两个文件在同一个域中,一切都很好。但是,如果我想为另一个域做同样的事情,它将无法正常工作。我想用jsonp将相同的信息发送到phpfile.php。我知道它应该是GET,但我无法弄清楚如何。
答案 0 :(得分:1)
首先,你的php文件没有输出任何内容,所以我根本不会调用这个JSONP。 JSONP是一种使用GET请求获取JSON数据的方法,该请求返回可以使用<SCRIPT>
标记加载的一大块Javascript。
为了自己做JSONP,你必须做这样的事情:
<?php
$callback = $_GET['callback'];
$name = $_GET['name'];
$location = $_GET['location'];
$myFile = "test.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
fwrite($fh, $name);
fwrite($fh, $location);
fclose($fh);
header("Content-Type: application/javascript");
?>
<?php echo $callback; ?>("Message from the server");
然后执行这样的调用:
$.getJSON("http://server/phpfile.php?name=FOO&location=BAR&callback=?",
function(message) {
alert(msg);
});
但是...... 由于您实际上并未从服务器返回任何数据,因此您也可以使用正确的URL伪装图像。这将大大减少开销。