Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将签名的_请求与AJAX调用一起传递给用CanvasAuthorize修饰的ActionMethod_Ajax_Facebook_Jquery_Facebook C# Sdk - Fatal编程技术网

将签名的_请求与AJAX调用一起传递给用CanvasAuthorize修饰的ActionMethod

将签名的_请求与AJAX调用一起传递给用CanvasAuthorize修饰的ActionMethod,ajax,facebook,jquery,facebook-c#-sdk,Ajax,Facebook,Jquery,Facebook C# Sdk,这是一项后续行动 因此,我发现了以下链接,这似乎是一个常见的问题: 我试着听从prabir的建议,但没能奏效 以下是我的设置: 我在页面中有以下代码片段,触发整个facebook帖子的按钮位于该页面: @if (!string.IsNullOrEmpty(Request.Params["signed_request"])) { <input type="hidden" id="signedReq" value="@Request.Params["signed_request"]

这是一项后续行动

因此,我发现了以下链接,这似乎是一个常见的问题:

我试着听从prabir的建议,但没能奏效

以下是我的设置:

我在页面中有以下代码片段,触发整个facebook帖子的按钮位于该页面:

@if (!string.IsNullOrEmpty(Request.Params["signed_request"]))
{
    <input type="hidden" id="signedReq" value="@Request.Params["signed_request"]" />
}
最后,在一个外部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”字段。有什么想法吗?

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

另外,当您试图通过JQuery提取输入字段的ID时,可能没有引用正确的元素,因为.NET butcher的ID是服务器上运行的任何内容的ID

当我使用隐藏输入字段技巧时,我设置jquery值如下:

var signedRequest=$('#').val()

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


希望能有所帮助。

只是一个猜测-在您的隐藏字段中:id=“signed\u request”而不是id=“signedReq”

谢谢您的回复。问题是,
Request.Params[“signed_Request”]
始终为空,因此不会将任何内容发送回服务器。我不知道为什么应该首先填充它,用户不应该在单击按钮后登录到FB,并且在那个时候应该填充已签名的请求吗?我想我错过了一些东西。。。这真让人困惑/
/*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");
            }
        }
    });
}