如何在javascript中動態調用php函數


Answers

您無法直接執行此操作,因為在服務器上解釋了PHP,並且您在客戶端上使用了JavaScript。 但是,如果您在服務器上創建一個頁面random-image.php,則可以使用AJAX獲取數據,並在返回時操作服務器端。

Question

我有一個index.php與以下js函數:

function returnImageString() {
    return "<?php include 'inc/image.functions.php'; echo getRandomImages(7); ?>";        //This isn't dynamic; this will always return the same images.  How do I fix this?
}

但是,當頁面加載時,將調用php腳本,並將結果添加到源代碼中,如下所示:

function returnImageString() {
    return "images/20.11.A1B9.jpg|images/8.14.47683.jpg|images/19.10.FBB9.jpg|images/21.12.9A.jpg|images/8.11.1474937909.jpg|images/8.15.99404.jpg|images/8.10.jpg|"; //This isn't dynamic; this will always return the same images. How do I fix this?
 }

我想要發生的是每當我調用js函數(returnImageString)時,我希望它每次都調用php函數(因為php函數返回一串隨機圖像位置),而不是將字符串硬編碼到js函數中。

有人能指引我朝著正確的方向嗎? 謝謝!




這通常被稱為Ajax。 谷歌為它。




我做了這一段時間......也許它可以幫助你。 這是一個用ajax調用javascript內部的php函數的例子。 (我使用gzcompress)php文件必須被命名為foo.php才能使用此演示。

JavaScript的:

//lib
(function(a){for(var b in a)(function(c){a[b]=function(){c.apply(this,arguments);return this}})(a[b])})(XMLHttpRequest.prototype);

XMLHttpRequest.prototype.$p=function(a,b){for(b in a)this[b]=a[b];return this};

(function(a,d,i){for(i in d=document.getElementsByTagName('*'))a[d[i].id]=d[i]})(document);
//lib

function gzcompress(s,c){

    var buffer;

    (new XMLHttpRequest)

    .$p({onreadystatechange:function(){if(this.readyState>3){

        buffer = this.responseText;

    }}})

    .open("POST","foo.php",!1)
    .setRequestHeader("Content-type","application/x-www-form-urlencoded")
    .send(
        "s="+s
        +"&"+
        "c="+c
    );
    return buffer;
}

//look! it's gzcompress inside javascript! it's magical!
document.myDiv.innerHTML = gzcompress("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",2)

PHP:

<?php 

echo gzcompress($_POST['s'], $_POST['c']);

?>