这是AJAX Call Does Not Trigger Action Method When Decorated With 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"]" />
}
然后我有这个片段(在同一页面内的脚本标签内):
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 :(得分:0)
确保正在填充隐藏的输入字段。
此外,当您尝试通过JQuery提取输入字段的ID时,您可能没有引用正确的元素,因为.NET Butcher的ID是服务器上运行的任何内容。
当我使用隐藏的输入字段技巧时,我像这样设置jquery值:
var signedRequest = $('#&lt;%= signedReq.ClientID%&gt;')。val();
这样,我就获得了.NET给HTML元素的标识符。
希望有所帮助。
答案 1 :(得分:0)
只是一个猜测 - 在您隐藏的字段中:id =“signed_request”而不是id =“signedReq”