2011-05-20 31 views
1

的ActionMethod沿signed_request这是一个后续AJAX Call Does Not Trigger Action Method When Decorated With CanvasAuthorize传递与AJAX调用饰CanvasAuthorize

所以我发现下面的链接,似乎这是一个普遍的问题:

http://facebooksdk.codeplex.com/discussions/251878

http://facebooksdk.codeplex.com/discussions/250820

我试图遵循prabir的意见,但我无法得到它的工作...

这里是我的设置:

我在页面下面的代码片段,其中触发整个投递到Facebook的按钮位于:

@if (!string.IsNullOrEmpty(Request.Params["signed_request"])) 
{ 
    <input type="hidden" id="signedReq" value="@Request.Params["signed_request"]" /> 
} 

然后,我有这个片段(script标签内内在同一页):

var signedRequest = $('#signedReq').val(); 
    $('.facebookIcon').click(function() { 
     var thisItem = $(this).parent().parent(); 
     var msg = thisItem.find('.compItemDescription').text(); 
     var title = thisItem.find('.compareItemTitle').text(); 
     var itemLink = thisItem.find('.compareItemTitle').attr('href'); 
     var img = thisItem.find('img').first().attr('src'); 
     postOnFacebook(msg, itemLink, img, title, signedRequest); 
    }); 

最后,外部js文件我有以下函数内部:

/*Facebook post item to wall*/ 
function postOnFacebook(msg, itemLink, pic, itemTitle, signedReq) { 
    console.log(signedReq); 
    var siteUrl = 'http://www.localhost:2732'; 
    $.ajax({ 
     url: '/Facebook/PostItem', 
     data: { 
      'message': msg, 
      'link': siteUrl + itemLink, 
      'picture': siteUrl + pic, 
      'name' : itemTitle, 
      'signed_request': signedReq 
     }, 
     type: 'get', 
     success: function(data) { 
      if(data.result == "success") { 
       alert("item was posted on facebook"); 
      } 
     } 
    }); 
} 

但signedReq总是未定义的。我不确定我应该传递数据对象中的'signed_request'字段。有什么想法吗?

回答

0

确保您隐藏的输入字段正在填充。

另外,当您尝试通过JQuery拉取输入字段的ID时,您可能不会引用适当的元素,因为.NET屠夫的ID是在服务器上运行的任何东西。 。

当我使用隐藏的输入字段特技,我设置jquery的值如下所示:

变种signedRequest = $( '#<%= signedReq.​​ClientID%>')VAL();

这样,我得到了.NET给HTML元素的标识符。

希望有所帮助。

+0

感谢您的回复。问题是Request.Params [“signed_request”]总是空的,因此没有任何东西被发送回服务器。我不知道为什么它应该首先填充,不应该用户登录到FB ** AFTER **他们点击了按钮,那时签名的请求应该填充?我想我在这里错过了一些东西......这真是令人困惑! :/ – Kassem 2011-05-21 08:23:57

0

只是一个猜测 - 在你的隐藏领域:id =“signed_request”而不是id =“signedReq”

+0

nope。它始终为空。 – Kassem 2011-05-21 15:17:15