Использование jquery в приложении iframe для Facebook - GET vs. POST - PullRequest
1 голос
/ 03 мая 2011

Мне было интересно, что нужно учитывать при использовании jquery в приложении iframe на Facebook.

Я пытаюсь разрешить моей сетке использовать пейджинг без постоянной перезагрузки всей страницы ASP.NET MVC.

Существуют ли какие-либо специальные действия, которые необходимо выполнить при использовании jquery в приложении iframe на Facebook?

EDIT: Я уже использую компоненты jquery-ui, такие как datepicker, которые работают нормально. Но как только я хочу вставить результат действия Controller в элемент HTML, я борюсь.

EDIT2: Кажется, что функции jquery, использующие протокол POST, работают нормально, но не при использовании протокола GET.

Пример звонка:

Работает:

       $("#element").live("click", function () {
   $.ajax(  
    {  
        type: "POST",  
        url: "<%=Url.Action("Action","Controller") %>",  
          parameters: {  page: 2  },
        success: function(result) {  
            $("#element2").html(result); 
        }  
    });  

       return false;
   });

Не работает:

       $("#element").live("click", function () {
   $.ajax(  
    {  
        type: "GET",  
        url: "<%=Url.Action("Action","Controller") %>",  
          parameters: {  page: 2  },
        success: function(result) {  
            $("#element2").html(result); 
        }  
    });  

       return false;
   });

Ответы [ 3 ]

3 голосов
/ 03 мая 2011

Я уже использую компоненты jquery-ui, такие как datepicker, которые работают нормально.Но как только я захочу вставить результат действия Controller в HTML-элемент, с которым я борюсь.

Вы можете вставить результат действия контроллера в HTML-элемент, используя функцию jQuery * 1005.* см. этот справочный документ для получения дополнительной информации.

Ваше действие контроллера должно возвращать JsonResult объект.

Например, этот код jQuery вызывает действие (myAction) на контроллере (myController) и обновляет элемент HTML со свойством возвращаемого объекта:

$.getJSON('MyWebsite/MyController/MyAction', SomeParameters, function (result) {
    if (result!=null)
    {
        $('#MyElement').html(result.Value1);
    })

И действие вашего контроллера должно возвращать объект JsonResult, подобный этому:

public JsonResult MyAction()
{
    return Json(new SomeObject
        { Parameter1 = Value1}, JsonRequestBehavior.AllowGet);
}

Надеюсь, это поможет.

1 голос
/ 03 мая 2011

Никаких специальных действий не требуется: содержимое iframe полностью находится под вашим контролем. Вы можете загружать любые файлы javascript, которые вы хотите, в iframe и выполнять любые действия с вашим кодом. Я широко использовал jquery в приложениях iframe на Facebook. Главное, на что нужно обратить внимание, это то, что контент iframe - это просто еще одна веб-страница. Там вы можете делать все, что можете, на обычной веб-странице (за исключением, может быть, изменения размера окна: это больно, но все еще можно сделать с помощью Facebook SDK).

Если вам нужен доступ к API Facebook, Javascript SDK Facebook является вашим другом, но в рамках iframe вы можете делать все, что можете, на обычной веб-странице.

0 голосов
/ 03 мая 2011

Я думаю, что вы не можете.

В целях безопасности javascript между двумя iFrames (родительский / дочерний) отключен браузерами, если они не находятся в одном домене. Таким образом, www.yourwebsite.com не может вызывать функции javascript из www.facebook.com, например, если facebook.com находится в iFrame (глупый пример, но он может помочь вам разобраться)

Я думаю, что вы застряли в телефонных службах

...