2013-04-12 35 views
0

我在local中安裝了Magento。
我將自己的Ajax代碼magento\app\design\frontend\base\default\template\catalog\product\view.phtmlMagento - Ajax調用PHP不工作

我試圖在同一位置張貼一些變量到另一個PHP文件爲view.phtml

<script> 
    function loadXMLDoc() 
    { 
     var user = "<?php echo $userId;?>"; 
     var product = "<?php echo $xxx;?>"; 
     var xmlhttp; 
     if (window.XMLHttpRequest) 
     {// code for IE7+, Firefox, Chrome, Opera, Safari 
      xmlhttp=new XMLHttpRequest(); 
     } 
     else 
     {// code for IE6, IE5 
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     xmlhttp.open("POST","test.php",true); 
     xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
     xmlhttp.send("userID="+user+"&productID="+product); 
     } 

     //this is just a countdown timer 
    var timeLeft = 3; 
    var timer = window.setInterval(function() { 
    timeLeft--; 
    var minutesLeft = Math.floor(timeLeft/60); 
    var secondsLeft = timeLeft % 60; 
    console.log('Time left: ' + minutesLeft + ':' + secondsLeft); 
    if (timeLeft == 0) { 
    window.clearInterval(timer); 
    // do some ajax thing 

    loadXMLDoc(); 
     } 
    }, 1000); 
</script> 

基本上我會在幾秒後發佈2個變量到test.php。 我很確定這些代碼正在工作,但是當我在magento產品頁面中嘗試它們時。 它不工作。我試圖確定,如果所有的代碼正在執行。 一切運行良好,只有Ajax不會在PHP文件中發佈。

在test.php文件中,我只是得到2個變量並將其保存到位於同一文件夾中的.txt文件中。 test.php文件僅用於測試目的。

我需要的只是讓Ajax工作。我希望它發佈到test.php,但保持在同一頁面上。

我谷歌周圍,找到了一些解決方案,它似乎有一些與Magento控制器或一些連接。但我無法理解它。

任何人都可以請告訴我,如果有一個簡單的方法來解決這個問題?


我只是爲了使事情更清楚。

<?php 

    if(isset($_POST['userID'])) 
    { 
    $userID = $_POST['userID']; 
    $productID = $_POST['productID']; 

    $file = "db.txt"; 

    $current = file_get_contents($file); 

    $current .= "\n$userID \t $productID"; 

    file_put_contents($file, $current); 
    } 

    ?> 

和db.txt放在同一文件夾中的test.php

如何知道是否test.php的被稱爲? 我試圖檢查db.txt,但裏面沒有任何改變。


修正

我把我的test.php和db.txt根。 和更改

xmlhttp.open("POST","test.php",true) 

xmlhttp.open("POST","http://localhost/magento/test.php",true) 

THANK YOU

+0

你一定'test.php'存在於你的Magento根?例如'test.php'應該存在'index.php'旁邊 –

+0

嗨Jeremi,test.php與view.phtml位於同一個文件夾。或者我應該把test.php放在根目錄下?我把txt文件放在根目錄和產品文件夾中。謝謝。 –

回答

0

顯然,因爲你必須test.php旁邊view.phtml,這是行不通的xmlhttp.open("POST","test.php",true);將在/test.php請求POST(這意味着應用程序根)。

請將test.phpdb.txt在根(同一個地方,你可以找到Magento的index.php

+0

它仍然無法正常工作。我已經把test.php和db.txt都放在與索引相同的根上。PHP我甚至試圖把skinURL文件夾,並嘗試改變後方法獲取方法。什麼都沒發生。它就像xmlhttp.open無法打開文件。 –

+0

非常感謝。 –

+0

現在它在工作嗎?您可能想將'xmlhttp.open(「POST」,「test.php」,true);'更改爲'xmlhttp.open(「POST」,「/ test.php」,true);'(帶有前導斜槓) –