2013-09-30 4 views
9

У меня есть страница с кнопкой Share на Facebook. URL, который я хочу предоставить, содержит строку запроса, которую я создаю с помощью javascript. Вот как я генерировать URL поделиться ..Facebook игнорирует часть моей строки запроса в share URL

queryString = "cup=blue&bowl=red&spoon=green"; 
//the values of this are actually generated by user input, don't think its important for this example though. So in this example its just a basic string. 

siteURL = "http://example.com/?share=1&"; 
//the url without the query string 

sharingURL = siteURL+queryString; 
//Combing the domain/host with query string.. sharingURL should = http://example.com?share=1&cup=blue&bowl=red&spoon=green 


function FBshare(){ 
    shareURL = siteURL+queryString; 
    console.log(shareURL); 
    window.open(
    'https://www.facebook.com/sharer/sharer.php?u='+shareURL, 
    'facebook-share-dialog', 
    'width=626,height=436'); 
    return false; 
} 


$(".facebook").bind("click", function(){ 
    FBshare(); 
}); 

Когда facebook захватывает URL по какой-то причине его ухода от всего, что было создано в переменной queryString. Таким образом, общий URL-адрес заканчивается только http://example.com/?share=1. Любые идеи, почему его уход из переменной queryString? Правильный URL-адрес попадает в console.log просто отлично, плюс его в URL-адрес share.php Facebook как строку запроса (например, https://www.facebook.com/sharer/sharer.php?u=http://example.com/?share=1&cup=blue&bowl=red&spoon=green) .., но фактическая ссылка на Facebook неполна.

Это jsFiddle. http://jsfiddle.net/dmcgrew/gawrv/

ответ

16

facebook URL-адрес выходит, как это:

https://www.facebook.com/sharer/sharer.php?u=http://example.com?share=1&cup=blue&bowl=red&spoon=green 

Первый & и параметр cup (а также других параметров) интерпретируются как часть facebook URL.

Использование encodeURIComponent(), который кодирует специальные символы, такие как &:

2

В дополнение к ответу Jason P, в sharer.php давно уже устаревшим.

Вместо этого, вы должны использовать канал и Share диалоговые Facebook: https://developers.facebook.com/docs/reference/dialogs/feed/

Они предлагают больший контроль над диалогом акций, а также лучшую отладкой через Facebook Debugger.

Смежные вопросы