2014-02-09 90 views
1

我想用JavaScript將發送到一個DIV標籤中的數據和文本轉換爲php值。用javascript將數據發送到PHP

我有使用此代碼的問題:

<html> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"> 
<script> 
    $.post('http://localhost/test/index.php', { 
     name: $('.class').html()}); 
     $(document).ready(function(){ 
      $("#my_form").on("submit", function() { 
       var hvalue = $('.class').text(); 
       $(this).append("<input type='hidden' name='name' value=' " + hvalue + " '/>"); 
      }); 
    }); 
</script> 
<form action="" method="POST" id="my_form"> 
    <div class="class" name="name"> 
     this is my div 
    </div> 
    <input type="submit" value="submit" name="submit" /> 
</form> 

<?php 
if (isset($_POST['name'])) { 
    echo $_POST['name']; 
} 

它不工作。沒有出現!和NO PHP的工作!

我該如何解決這個問題?

+3

使用調試器。例如Chrome或Opera中的那個。它包含漂亮的「網絡」選項卡,顯示所有正在進行的通信。你可以看到回調是否完成,返回的是什麼。 – nothrow

+2

您的腳本已經嘗試在加載頁面時發起發佈請求。至少等到頁面完成加載之後再做。現在,您正在發送發佈請求,並且包含您的DOM中尚未存在的值。 – Tularis

+1

此腳本需要認真重構,因爲即使您的PHP安裝正確,它也不會執行預期的操作。我會盡力在我的答案中解決這個問題。 – Zarathuztra

回答

5

你說你想做到以下幾點:

我要發送的數據,這是在一個DIV標籤與 的Javascript到PHP值的文本。

而且

它不工作。沒有出現!和NO PHP的工作!

首先您需要確定「出現」的含義。您是否嘗試將PHP腳本的結果嵌入到頁面中?

首先,讓我們專注於您的第一項,發送數據。請執行以下操作:

從您發佈的發佈請求中刪除onReady語句。這是令人困惑的,並可能導致意想不到的結果:

$.post('http://localhost/test/index.php', { 
     name: $('.class').html()}); 
     $(document).ready(function(){ 
      $("#my_form").on("submit", function() { 
       var hvalue = $('.class').text(); 
       $(this).append("<input type='hidden' name='name' value=' " + hvalue + " '/>"); 
      }); 
    }); 

可讀性在這裏是關鍵。這絕對是怪異的,我從來沒有見過任何人這樣做。

注意我將您的課程從.html()更改爲.text()。這是因爲你只使用文本節點而不是html,因爲這裏給出了你的示例代碼。如果它實際上是html,那麼你可以使用html()函數。

其次,你試圖命中的PHP腳本是直接嵌入的。 嘗試將它移動到一個新文件中,例如在我上面的示例myPhpScript中。PHP

在這個文件將是你的PHP代碼字段中的POST請求:

<?php 
    if (isset($_POST['name'])) { 
    echo $_POST['name']; 

你在你的POST請求缺少一個成功的處理程序,所以當請求成功,沒有什麼事情發生, 。請將以下內容添加到您的請求設置對象中。在這一點上,你可以做你準備好以下

$(document).ready(function(){ 
    $.post('http://localhost/test/myPhpScript.php', { 
      name: $('.class').html()} 
      ,function(data){ 
       $(".class").text(data).append("<input type='hidden' name='name' value=' " + hvalue + " '/>"); 
      } 
    }); 
}); 

這應該讓你開始,但請記住,也可能有其他問題。我在這裏也有我自己的一些問題。我要指責缺乏咖啡因和蹣跚學步,並且不要將文檔打開時間足夠長以確保我完美無缺。

有人很友善地編輯我的錯誤,所以爲此我感謝你。

+0

+1努力和解釋! –

+0

謝謝親愛的Zarathuztra:X – user3271403

+1

我只是希望有所幫助! – Zarathuztra

0

這是因爲您沒有爲您的$.post請求指定成功處理程序。所以它所做的只是返回一些HTML,就像你在後臺中所做的那樣,但是JavaScript對此並沒有做任何事情。

請閱讀http://api.jquery.com/jquery.post/上的API文檔,並檢查success(data, textStatus, jqXHR)部分參數爲$.post。那就是你定義你的成功處理器的地方。

試試這個,你就會明白我的意思:

$.post('http://localhost/test/index.php', { 
    name: $('.class').html() 
}, function(data) { 
    alert(data); 
}); 

function(data) { ... }需要那麼它與您的數據的東西一些邏輯程序。

+0

Tnx,但是沒有工作! – user3271403

+0

正如@Yossarian所說,檢查調試器中的Network選項卡,例如Chrome的開發者工具(Ctrl-Shift-I) –

+0

謝謝,問題現在已經修復;) – user3271403