2014-03-13 74 views
0

我有一個搜索功能,假設從數據庫中搜索名稱,然後當用戶單擊添加時,選擇的項目必須出現在搜索字段下面,總之必須發佈以便用戶可以從搜索元素中重新選擇他/她的第二個選項,以便所有選定的選項都可以保存在數據庫中。我面臨的問題是,我點擊添加即時通訊獲取未定義的值,而不是我選擇的一個,我的迴應是一個名稱,而不是一個Id號碼,這裏是我的代碼和下面的圖片。Ajax返回undefine值

MODEL

public function getName($id) 
    { 
     $select = $this->select() 
         ->where('service_provider_id LIKE "' . $id . '%"') 
         ->order('service_provider_name'); 
     return $this->fetchAll($select); 
    } 

CONTROLLER

{ 
    $id = $this->getRequest()->getParam('id'); 

    $mdlserviceprovider = new Model_ServiceProviders(); 
    $serviceprovider = $mdlserviceprovider ->getName($id); 
    $arr_rtn = array(); 
    if (count($results) > 0){ 
     foreach($results as $result) 
     { 
      $myarr = array('label' => $result->service_provider_name, 
          'value' => $result->service_provider_name, 
          'id' => $result->service_provider_id 
          ); 
      array_push($arr_rtn, $myarr); 
     } 
    } 
    echo Zend_Json::encode($arr_rtn); 
} 

PHTML/AJAX

$('#add1').click(function(){ 


        var data = {}; 
        data['sp'] = $("#search").val();   

        $.ajax({ 
         url:'<?php echo $this->baseUrl()?>/ajax/postserviceprovider/id', 
         type:'post', 
         dataType: "json", 
         data: data,   
         success:function(data){ 
         var row = '<tr><td>' + data["serviceprovider"] + '</td></tr>'; 
         $('#t1').append(row); 
         //alert(); 
         }    
        }); 
       }); 

enter image description here

預先感謝

回答

0

您正在尋找不數組中存在的關鍵要返回試試這個

var row = '<tr><td>' + data['label'] + '</td></tr>'; 

或者這

var row = '<tr><td>' + data['value'] + '</td></tr>'; 

由於這些都是你在PHP中定義的兩個鍵

+0

仍然得到未定義 –

0

可以使用data["value"]代替data["serviceprovider"]

var row = '<tr><td>' + data["value"] + '</td></tr>'; 

由於您已編碼包含三個鍵的數組:labelvalueid。所以現在沒有serviceprovider的關鍵在於Zend編碼。

+0

仍然得到未定義 –

+0

嘗試使用'數據[0] .value'。還要確保你的'$ results'包含值。嘗試使用'var_dump($ results)'或'print_r($ results)'來檢查它。 – Felix

+0

無法回覆 –

0

嘗試

var row = '<tr><td>' + data[0].value + '</td></tr>'; 

也試圖把一個alert()的成功之類的函數,

alert(JSON.stringify(data)); 

,看看什麼是包含在裏面..

+0

此次沒有回覆 –

+0

您的快訊顯示空白嗎? –

+0

是我的提醒 –

0

從我所看到的,我認爲你是從ruurning從PHP的多維數組,所以我會嘗試這樣的javascript:

$('#add1').click(function(){ 


        var data = {}; 
        data['sp'] = $("#search").val();   

        $.ajax({ 
         url:'<?php echo $this->baseUrl()?>/ajax/postserviceprovider/id', 
         type:'post', 
         dataType: "json", 
         data: data,   
         success:function(data){ 
         data.each(function(index, el){ 
          var row = '<tr><td>' + el.label + '</td></tr>'; 
          $('#t1').append(row); 
          //alert(); 
         } 
         }    
        }); 
       }); 
0

在你的控制器試試:

$this->disableLayout(); 
$this->_helper->viewRenderer->setNoRender(true); 
return $this->_helper->json(array('key1' => $val1, 'key2' => $val2, ...)); 
+0

Im geting返回空值 –

+0

您的$ arr_rtn爲空? – doydoy44

+0

Nah單擊添加後返回的值爲空 –