2013-04-12 31 views
0

腳本:jQuery的回報後整個HTML網頁代碼

$.post("<?php echo base_url(); ?>home/comment?"+$("#MYFORM").serialize(), { 

        }, function(response){ 

        if(response.msg == '1') 
        { 
         ..... 
        } 
        else 
        { 
              .... 
        } 
      }, "json" 
      ); 

行動:

function comment() 
{ 
    echo json_encode("msg=".$this->homemodel->comments());   
} 

問題: homemodel->評論返回1或0的問題是,在響應面板的螢火蟲它顯示行動的回聲值加上整個html頁面。因此我無法將response.msg的值設爲1或0.這段代碼有什麼問題。我必須改變,只返回評論行動的價值回聲的後jquery?

+0

您提供的代碼不足以理解模型爲什麼返回它的原型,我們還需要您的控制器和模型代碼以查看返回數據的方式以及返回的數據 –

+0

HTML頁面的代碼是寫在你的文件或由服務器生成的東西? – p91paul

回答

0

我不知道你的事情是如何工作的,甚至它應該做什麼,但是當我使用$ .post(或ajax)時,我通常會做的事情是在帖子中添加了一個額外的參數(ajax = 1)數據,以便我可以知道並只做我想要的回聲時,它的ajax調用。基本上,在服務器端,它可能看起來像這樣:

if (isset($_POST['ajax']) && $_POST['ajax']) { 
    echo json_encode($anArray); 
    die() 
} 

die()函數阻止頁面的其餘部分被回顯。這是非常有用的,因爲你可以創建一個文件(我們將這個inc.ajax.php)包含在任何代碼之前(比如在index.php的頭文件或第一行),你可以使用它作爲控制者。所以你可以添加一個運算符,並且inc.ajax.php將成爲你的ajax控制器。收回前面的例子:

if (isset($_POST['ajax']) && $_POST['ajax']) { 
    $operator = $_POST['operator']; 
    switch ($operator) { 
    case 'upload': 
     $obj->upload(); 
     echo json_encode($obj,true); 
    break; 
    default: 
     echo json_encode($anArray); 
    break; 
    } 
    die() 
} 

如果inc.ajax包含在每一頁(上也許是的index.php),很容易$。員額()與阿賈克斯當前URL = 1 &運算符= [你的操作符],你總是會得到你需要的json(或者響應仍然可以是html)。例如,在一個操作符中,你可以回顯一個完整的模板然後「die()」,這樣你就可以得到你希望的網站。)希望這可以幫助,希望我沒有錯過這一點,一定希望我沒有把你所有的東西混淆!

+0

感謝die()實際上解決了問題,或者我們可以在echo之後放置exit() – CodeManiac

+0

個人而言,我使用die&I將它全部寫入一行,而不是echo我寫了類似於die(json_encode($ array))的東西; – ahmad