将signed_request和AJAX调用一起传递给使用CanvasAuthorize修饰的ActionMethod
这是使用CanvasAuthorize进行装饰时AJAX调用不触发操作方法的后续操作
所以我找到了以下链接,似乎这是一个常见的问题:
http://facebooksdk.codeplex.com/discussions/251878
http://facebooksdk.codeplex.com/discussions/250820
我试图遵循prabir的建议,但我无法让它工作……
这是我的设置:
我在页面中有以下片段,其中触发整个post到facebook的按钮位于:
@if (!string.IsNullOrEmpty(Request.Params["signed_request"])) { }
然后我有这个片段(在同一页面内的脚本标记内):
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文件中我有以下function:
/*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’字段。 有什么想法吗?
确保正在填充隐藏的输入字段。
此外,当您尝试通过JQuery提取输入字段的ID时,您可能无法引用正确的元素,因为.NET Butcher的ID是服务器上运行的任何内容。
当我使用隐藏的输入字段技巧时,我设置jquery值如下:
var signedRequest = $(’#<%= signedReq.ClientID%>‘)。val();
这样,我就获得了.NET给HTML元素的标识符。
希望有所帮助。
只是一个猜测 – 在你的隐藏字段中:id =“signed_request”而不是id =“signedReq”