2010-07-02 105 views
0

我通過ajax發佈了一些表單值到PHP腳本。如果PHP成功,PHP會迴應1,如果不成功則迴應2。JQuery Ajax錯誤

PHP似乎工作正常,但我被重定向到JavaScript中的網址,並顯示在空白頁上的數字1,而不是它被回顯到ajax請求。

這是我的javascript,任何人都可以看到我要去哪裏錯了?

$(".save").click(function() { 
var area = $("input#area").val(); 
var january = $("input#january").val(); 
var target = $("input#target").val(); 
var ach = $("input#achieved").val(); 
var comments = $("input#comments").val(); 
var token = "<?php echo $token; ?>"; 
var dataString = 'area='+ area + '&january=' + january + '&target=' + target + '&achieved=' + ach + '&comments=' + comments + '&ci_token=' + token; 
    $.ajax({ 
    type: "POST", 
    url: "review/update-review/<?php echo $yr; ?>", 
    data: dataString, 
    success: function(msg) { 

     if(msg == 1) 
     { 
      alert("Your review has been updated."); 
     } 
     else 
     { 
      alert("There was a problem updating your review. Please try again."); 
     } 

    } 
    }); 
    return false; }); 

回答

0

我認爲問題可能歸結爲您的數據參數的格式。對於

類型: 「POST」

然後

數據: 「{參數1: '參數1',參數2: '參數2'}」

你有一個像小提琴手的工具來查看瀏覽器和服務器之間的通信。如果不是,我會建議下載小提琴手(它是免費的)。它會讓你對幕後實際發生的事情有很多見解,並且可以給出有關ajax樣式文章可能出錯的寶貴信息。

+0

在這裏唯一的其他評論,以解決這種情況。 – RobertPitt 2010-07-02 09:59:38

+0

謝謝大家的回覆。我爲Firefox使用了Tamper Data插件,並發現我錯誤地將其他表單字段值傳遞給了ajax請求。 現在全部排序,似乎按預期工作。謝謝大家的幫助。 – Tom 2010-07-02 10:53:17

0

代碼對我來說看起來非常好,包括語法。不過一些可能出現的,它們是: -

  • 用於執行PHP代碼,您正在使用該示例中的URL(「review/update-review/<?php echo $yr; ?>」),可能會錯誤地參考您的當前頁面給出。
  • 您在此處用於捕獲INPUT元素值的變量可能會產生一些額外的特殊字符(如「&」),這些字符可能導致錯誤處理,從而導致JavaScript問題。

希望它有幫助。

+0

感謝您的建議。 我已經通過並重新檢查了一切。所有數據都正確地發佈到數據庫中,除了ajax沒有收到響應,所有內容似乎都正常工作,我正被重定向到URL。 – Tom 2010-07-02 10:41:24

+0

您能否詳細說明「我正在重定向到URL」這一行,因爲我沒有得到你想說的話?從哪個網址獲得重定向,以及如何檢查結果是否已插入到數據庫中。 **另外檢查另一點,如果你的任何用戶輸入的數據包含特殊字符(在本例中爲「&」),那麼JS變量「dataString」將無法正常工作。**請檢查這些點。謝謝 – 2010-07-02 10:54:23

0

對於初學者if(msg == 1)不會是== 1,因爲您的提取是一個字符串,所以它會b if(msg == '1')

如果你有

var dataString = 'area='+ area + '&january=' + january + '&target=' + target + '&achieved=' + ach + '&comments=' + comments + '&ci_token=' + token; 

修改成一個對象,像這樣:

var dataObject = { 
    area : area, 
    january : january, 
    target : target, 
    achieved : ach, 
    comments : comments, 
    ci_token : token 
} 

,然後在Ajax請求更改爲dataObject

調試

  • Firefox:firbug。
  • 如果您使用chrome命中Ctrl+Shift+J來打開javascript控制檯並進行調試。注意發送的所有heaDers和數據,並且您可以使用console.log(varaible)來跟蹤變量的值。
+0

感謝有關字符串被傳回的建議 - 我也改變了。 – Tom 2010-07-02 10:54:36