如何将正确的变量传递给JqueryMobile多页动态创建的html文件中的FB.ui脚本

时间:2013-09-15 11:32:15

标签: javascript php jquery facebook facebook-graph-api

我是否使用FB.ui发布到动态创建的Jquery多页内的Facebook用户墙?

function print_sharescript($values) {
echo "
<script> 
  FB.init({appId: \"$_SESSION[appId]\", status: true, cookie: true});
  function postToFeed() {
    // calling the API ...
    var obj = {
      method: 'feed',
      link: '$values[link]',
      picture: '$values[picture]',
      name: '$value[name]',
      caption: '$value[caption]',
      description: '$value[description]'
    };
    function callback(response) {
      // document.getElementById('msg').innerHTML = \"Post ID: \" + response['post_id'];
    }
    FB.ui(obj, callback);
  }
</script>
";
 }

 ... code ...
 foreach ($des=>$val) {
      // explode $val and fill the $values[$des][...] array ($des: from 0 to 10)
      print_sharescript($values[$des]);
      echo "// MY OUTPUT....";
      echo "<a onclick='postToFeed(); return false;'>Share</a>";
 }
 .... code ....

除了共享值始终是最后一个数组值之外,所有运行正常。 如果我查看html代码,循环中的每个脚本都有正确的值,但FB Share弹出窗口中的值是错误的..

我认为问题是由obj变量引起的。 我怎么能纠正错误?

1 个答案:

答案 0 :(得分:0)

如果查看PHP代码的输出,您应该能够看到postToFeed javascript函数定义被重复。由于该函数每次都具有相同的名称,因此最新的提及将覆盖所有其他定义。

这是未经测试的伪PHP,但您可以尝试这样的事情:

// You could actually move this into your .js or .html file instead
function print_sharescript($values) {
echo "
<script> 
  FB.init({appId: \"$_SESSION[appId]\", status: true, cookie: true});
  function postToFeed(obj) {
    obj.method = 'feed';
    function callback(response) {
      // document.getElementById('msg').innerHTML = \"Post ID: \" + response['post_id'];
    }
    FB.ui(obj, callback);
  }
</script>
";
 }

 ... code ...
 print_sharescript();
 foreach ($des=>$val) {
 $json = addslashes(json_encode($val));
      echo "<a onclick='postToFeed($json); return false;'>Share</a>";
 }
 .... code ....

同时考虑采用一些模板系统。