將JavaScript值傳遞給PHP變量(有限制)



0 Answers

您可以使用javascript來輕鬆完成此操作,例如HTML代碼:

<select id = "Select" onchange = "FijarPrecio (this.id);" >
    <option value = "10"> product 1 </ option>
    <option value = "20"> product 2 </ option>
    <option value = "30"> product 3 </ option>
</select>
<input type = "text"  name = "Price" id = "Price"/>
<script type = "text/javascript" >
    FijarPrecio function (id) {
       PrecioSel var = document.getElementById (id);
       PrecioActual var = document.getElementById ('Price');
       PrecioActual.value = PrecioSel.value;
    }
</script>   
Question

我知道現在已經有了解決這個問題的問題和答案。 我已經看過他們,但我的情況不允許我應用這些線程提供的解決方案。

鑑於JavaScript是客戶端,PHP是服務器端,這兩個解決方案提供:

GET / POST方法(Post#3)

AJAX方法

限制:Facebook頁面選項卡應用程序

我不能使用上述方法通過URL傳遞參數,因為Facebook頁面標籤被加載到一個iFrame中,他們沒有訪問查詢字符串的權限。 Facebook通過使用Facebook signed_request像中的app_data GET參數與JSON編碼一起提供解決方法。

解決局限性:使用app_data GET參數

我能夠通過再次加載相同的頁面傳遞參數到同一頁面,但我仍然只處理PHP變量和值

fer.php

<?php
$appData = array();
if (!empty($signedRequest) && !empty($signedRequest['app_data'])) {
    $appData = json_decode($signedRequest['app_data'], true);
}

echo '<pre>' . print_r($appData) .'</pre>';
//prints Array ( [lat] => 123 [lon] => 456 ) when fer.php reloads

$params = array(
'lat' => '123',
'lon' => '456'
);

$encodedParams = urlencode(json_encode($params));

$tabUrl = 'http://www.facebook.com/pages/FACEBOOK_PAGE/367117263337064?sk=app_433576149993619';
//$tabUrl will open fer.php

$linkUrl = $tabUrl . '&app_data=' . $encodedParams;
?>
...
function loopPage() 
{
        top.location = "<?= $linkUrl ?>";
        //reloads fer.php
} 

參考: http//labs.thesedays.com/blog/2011/06/23/query-strings-for-facebook-page-tabs/

也試過了:

Cookie方法 (因為我仍然只處理PHP變量和值)

使用JavaScript encodeURIComponent()encodeURI() (錯誤的方法,因為這些方法編碼整個URL和傳遞的參數不被json_decode識別)

目前嘗試:使用Ajax的JSON(XMLHttpRequest)

從Javascript發送JSON數據到PHP?

如何將數據從JavaScript傳遞到PHP,反之亦然?

我真的想實現的是:

PHP變量在Facebook iFrame同一頁面中獲取JavaScript值。 頁面重新加載以將參數傳遞給自己是可以的。

fer.php (錯誤的例子)

function someValues(){
    varA = 123;
    varB = 456;
}

<?php
    $cupA = varA;
    $cupB = varB;
?>

我一直試圖解決這個問題好幾天,我json_decode了,甚至試圖欺騙json_decode通過添加%到我的數據,然後再附加到重定向URL = x我真的很感激任何幫助或指示。 謝謝!




Related