2012-08-28 77 views
0

在我的網站上,我用jQuery ui框架製作了一個對話框。jQuery UI對話框 - 缺少變量值

該對話框請求一個主題,審查內容,名稱和應該插入到mySQL中的城市。但是,當我想將變量傳遞給PHP時,變量中沒有值。

這裏是整個js函數處理該對話框:

$("#dialog-form").dialog({ 
    autoOpen: false, 
    height: 600, 
    width: 550, 
    modal: true, 
    buttons: { 
     "Skriv Review": function() { 
      var bValid = true; 
      allFields.removeClass("ui-state-error"); 

      bValid = bValid && checkLength(topic, "topic", 3, 16); 
      bValid = bValid && checkLength(review, "review", 1, 10000); 
      bValid = bValid && checkLength(name, "name", 1, 25); 
      bValid = bValid && checkLength(city, "city", 1, 16); 

      bValid = bValid && checkRegexp(name, /^[a-z]([0-9a-z_])+$/i, "Bruger skal være a-z, 0-9, underscores, begynde med et bogstav."); 

      if (bValid) { 
       $("#users tbody").append("<tr>" + 
        "<td>" + topic.val() + "</td>" + 
        "<td>" + review.val() + "</td>" + 
        "<td>" + name.val() + "</td>" + 
        "<td>" + city.val() + "</td>" + 
       "</tr>"); 

       var data = { 
        topic: topic.val(), 
        review: review.val(), 
        name: name.val(), 
        city: city.val() 
       } 

       $.ajax({ 
        type : 'POST', 
        url : 'bruger-reviews.php', 
        dataType : 'json', 
        data: data, 
        success : function(data){ 
         //success 
        } 
       }); 
       $(this).dialog("close"); 
      } 
     }, 
     Cancel: function() { 
      $(this).dialog("close"); 
     } 
    }, 
    close: function() { 
     allFields.val("").removeClass("ui-state-error"); 
    } 
}); 

這裏是我如何接收在PHP中的數據:

$ins_topic = $_POST['topic']; 
$ins_review = $_POST['review']; 
$ins_name = $_POST['name']; 
$ins_city = $_POST['city']; 

我沒有任何問題,顯示的數值喜歡它在jQuery UI的演示中完成。

當我$ _GET或$ _POST變量沒有數據。爲什麼我不能將值傳遞給PHP?我可以嘗試另一種方法嗎?

謝謝。

+0

您可以將您的完整的javascript代碼?因爲你的問題仍然不清楚,如果有必要附加你的php也 – bungdito

+0

bungdito,我已經附加了PHP的整個JS功能。 –

+0

我試圖使用json_decode方法並訪問數據,但仍然沒有任何結果。 –

回答

1

在關閉對話框之前,您應該將這些值帶到一個或多個變量中。

此代碼刪除從DOM中刪除對話框; $(this).dialog(「close」);

使用此;

if (bValid) { 
$("#users tbody").append("<tr>" + 
"<td>" + topic.val() + "</td>" + 
"<td>" + review.val() + "</td>" + 
"<td>" + name.val() + "</td>" + 
"<td>" + city.val() + "</td>" + 
"</tr>"); 
var data = { 
    topic: topic.val(), 
    review: review.val(), 
    name: name.val(), 
    city: city.val() 
} 
$(this).dialog("close"); 

不是使用這個數據對象上Ajax請求

$.ajax({ 
         type : 'POST', 
         url : 'bruger-reviews.php', 
         dataType : 'json', 
         data: data, 
         success : function(data){ 
          //success 
         } 
        }); 
+0

謝謝。將嘗試。 –

+0

仍似乎無法接受PHP中的值。在運行ajax函數後,是否需要刷新頁面才能執行$ _POST?刷新頁面的 –

+0

是反對使用ajax的主要原因。你可以在$ .ajax聲明之前使用console.log(data)。並嘗試在PHP上回應此請求; $ .ajax({type:'post',url:'bruger-reviews.php',data:{test:'test'},success:function(res){console.log(res);}}) – Lupus