2011-12-09 17 views
1

私は自分の状況でjsonpを使用する方法を理解しようとしていますが、運はありません。これはクリック数をカウントし、クリックごとに名前と場所をtxtファイルに書き込みます。jsonpでデータを送信onclick

<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> 

これらの2つのファイルは、すべてがうまくされているのと同じドメイン上にある場合これは、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

JSONPではありません。 –

+0

getJSONを使用することができます:http://api.jquery.com/jQuery.getJSON/ –

+0

document.writeの使用を中止してください。それは私の目を傷つける... –

答えて

1

まず、あなたのPHPファイルは何も出力しないので、私はこのJSONPをまったく呼び出さないでしょう。 JSONPは、<SCRIPT>タグを使用してロードできるJavascriptのチャンクを返すGETリクエストを使用してJSONデータを取得するメソッドです。あなたドンので

$.getJSON("http://server/phpfile.php?name=FOO&location=BAR&callback=?", 
      function(message) { 
       alert(msg); 
      }); 

しかし...:このような呼び出し何かを実行すると

<?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"); 

JSONPを自分で行うため、あなたはこのような何かを行う必要があるでしょう実際にサーバーからのデータを返さない場合は、正しいURLで画像を偽装するだけでも問題ありません。オーバーヘッドが大幅に削減されます。

+0

ご協力いただきありがとうございます! – Ciprian

+0

サーバーからどのようにデータを返すのですか?ユーザーがログインしているかどうかを確認したい – Ciprian

関連する問題