2011-07-26 45 views
0

頁我有一個簡單的複選框,點擊發送XHR到PHP網頁,PHP程序正確,我用json_encode($response)返回。但不是簡單的真或假,我得到了頁面的源代碼,當然它會導致「parsererror」。 Ajax調用如下爲什麼我的JSON響應一個完整的源代碼

$.ajax({ 
type: "post", 
url: "myprocessor.php", 
dataType: 'json', 
data: { "id" : idnumber, "action": "makeLive", "isLive" : "1" }, 
beforeSend: function(data) { 
      $("#ajaxInProgress").addClass('progress'); 
     }, 
     success: function(data) { 
      $("#status").removeClass().addClass((data.error === true) ? 'error' : 'success').text('Success! Appraiser is NO LONGER Live ').slideDown('slow'); 
     }, 
     error: function(data) { 
      $("#status").removeClass().addClass('error').text(' - Changing the Live status for this appraiser to "Not Live" has failed - APPRAISER IS STILL LIVE IN SYSTEM, please try again').slideDown('slow'); 
     }, 

     complete: function(data) { 
      $("#ajaxInProgress").removeClass('progress'); 
      setTimeout(function() { 
       $("#status").slideUp('slow').removeClass(); 
      },2000); 
     } 
    }); 

將帖子發到如下的PHP:

if (isset($_POST['action'])) { 
if($_POST['action']=='makeLive') { 
    $checkappraiser=mysql_query("SELECT * FROM table WHERE id='".mysql_real_escape_string($_POST['id'])."'"); 
    if (mysql_numrows($checkappraiser)>0) { 
     $livesetting=mysql_result($checkappraiser,0,"live"); 
     $livesetting=!$livesetting; 
     $runSql = mysql_query("UPDATE table SET live='$livesetting' WHERE id='".mysql_real_escape_string($_POST['id'])."'"); 
     if(!$runSql) { 
      $return['error'] = true; 
     } else { 
      $return['error'] = false; 
     } 
    } 
} 
echo json_encode($return); 
} 

任何建議將是巨大的。 我正在通過 正確的數據我得到的DB 我的回答是回來作爲一個解析錯誤,因爲它試圖解析源代碼作爲一個JSON數組更新正確的數據。

回答

3

只是一個快速檢查,請你把<?php在你的PHP文件的開頭?

+0

yes @andreas對我來說沒有短標籤 –

+0

當你說源代碼時,它是PHP的源代碼嗎? –

+0

這是整個HTML頁面,從下來 –

1

那麼,或者你在你的網絡服務器上做錯了什麼,沒有正確的傳遞文件到php。直接打php文件加載源或結果?

如果你打page.php文件,它加載同樣的事情,如果你打page.php文件或PHP等?它關係到Web服務器的過濾器,根據不同的Web服務器上...

如果您使用Tomcat對於Java,例如......你可以關閉大小寫查找文件,但它並沒有關閉的情況下靈敏度將文件映射到過濾器或servlet,因此.jsp將加載jsp servlet,但.jsP不會。

+0

感謝蒂姆,但它不是服務器的設置,(我假設),因爲我在這個頁面中的其它$就調用,所有的工作很棒,我使用的是相同的在這些其他代碼塊中也是如此。但由於某種原因,這一個響應是源代碼,而不是我習慣的json響應。我搜索了一下,並檢查了我找到的其他「修復」。無效... –

+0

如果您在瀏覽器中直接請求的頁面是否有效?如果你像ajax請求那樣通過POST命中它,那麼怎麼樣?製作一個快速表單並使用與您的ajax請求傳遞相同的參數進行提交。儘量準確地反映請求,並縮小問題的範圍。它必須是關於請求或服務器設置中的某些事情,服務器決定返回源代碼而不是處理結果。瀏覽器無法改變它,所以你的服務器返回的源代碼不是jQuery的錯。 – PersonThing

相關問題