2010-10-09 56 views
2

這可能會帶點有趣,甚至不知道如何開始標題。這可能是由於長時間的工作或我只是做錯了事情。

我有一個文件,說comment.php,其中包含了類似於:

var params = $('form#myform').serialize(); 
$.get("/ajax/file.php?"+params, function(data){ 
    if (data == 'error') { 
     $('#message').html('Error'); 
    } else if (data == 'success') { 
     $('#message').html('Success'); 
    } 
}); 

我用螢火檢查它,一切都很好,沒有JS錯誤,該文件被調用,並返回要麼「錯誤「,」成功「,但仍然在ajax調用數據與服務器響應不匹配。後來我改變

if (data == 'error') { 
    $('#message').html('Error'); 
} else if (data == 'success') { 
    $('#message').html('Success'); 
} 

if (trim(data) == 'error') { 
    $('#message').html('Error'); 
} else if (data == 'success') { 
    $('#message').html('Success'); 
} 

其中裝飾()是我寫的前或後的字符串,去除任何空間的功能。我也試圖智慧的文件被稱爲呼應數字和使用jQuery檢查,如:

if (data == 1) { 
    $('#message').html('Error'); 
} else if (data == 'success') { 
    $('#message').html('Success'); 
} 

沒有結果。如果我只警報(數據)一切看起來很好。這兩個文件都在同一個域中。我的代碼與示例中的完全相同,只是我有更多的if/else條件,其中一個條件應該總是匹配(如果我查看firebug,則會發生這種情況)。我也嘗試使用開關聲明沒有結果。

我一直在使用這種方法一段時間,從來沒有任何問題。想法?

+0

我會嘗試_alert(typeof數據)_來查看類型(並可能指定jquery _dataType_參數)。另外,請注意字符的大小寫(上/下)。 – 2010-10-09 07:18:18

+0

對不起,剛看到這個,在這附近有新:)感謝您的幫助,請牢記這一點! – Claudiu 2010-10-09 07:40:14

回答

2

.get()回調回調使用3個參數:

  1. 數據
  2. 狀態
  3. 了XMLHttpRequest

所以,你的方法應該工作。確保你注意大小寫,標點符號和空格。

我會嘗試,並獲得約data更多信息以查明問題:

var params = $('form#myform').serialize(); 
$.get("/ajax/file.php?"+params, function(data){  
     alert("Type: " + typeof.data + 
       "\nContents: ==>" + data + "<==" + 
       "\nTrim: ==>" + $.trim(data) + "<=="); // get more info 
}); 

注意,jQuery有一個$.trim()功能

+0

我不認爲它真的回答了爲什麼比較失敗的問題:_「如果我只警告(數據)一切看起來很好。」_ – 2010-10-09 07:20:44

+0

感謝您的提示,但正如Nikkita所說,這不是我的問題。我打電話的文件實際上是一個字符串,可以是任何'email','name','message'等。當我在回調函數中調用alert(data)時,它確實會說'email','name'或其他任何東西,但是它會在比較時失敗,就像if(data =='email')alert('email');並感謝$ .trim()函數提示:) – Claudiu 2010-10-09 07:24:57

+0

@Claudiu - 這很奇怪。我會嘗試瞭解更多關於'data'的信息。只需用各種信息提醒它,這應該讓你明白爲什麼比賽不起作用。你確定你的拼寫和大小寫正確嗎? – 2010-10-09 07:33:14

0

您不必追加系列化數據到這樣的查詢字符串。 $ .get()將接受三個參數,其中一個是序列化(查詢字符串)版本的數據或散列。但是,這不是你在這裏的原因。

數據就是無論打印出哪個php頁面。您是否真的從該頁面打印出「錯誤」或「成功」一詞?如果沒有,那麼你正在嘗試做什麼不會工作。

成功回調有三個參數:data,textStatus(response)和xhr。如何:

$.get("/ajax/file.php", $("#myform").serialize(), function (data, status) { 
    if (status == 'error') { 
     $('#message').html('Error'); 
    } 
    else if (status == 'success') { 
     $('#message').html('Success'); 
    } 
}); 
+0

你知道你基本上告訴我和彼得一樣的東西,對吧?儘管如此,感謝您提供參數的幫助,但我唯一的解決方案是使用$ .get('file.php',{key:value} .... – Claudiu 2010-10-09 07:32:10

+0

對不起,我們在同一時間發佈。意識到有一個信息重疊,但我認爲我提到的其他參數是非常相關的(我有這之前他編輯:))。 – 2010-10-09 07:52:23