2012-03-28 8 views
6

मुझे अपने AJAX प्रतिक्रिया से एक [ऑब्जेक्ट ऑब्जेक्ट] मिल रहा है।AJAX [ऑब्जेक्ट ऑब्जेक्ट] का उत्पादन कर रहा है?

 $.ajax({ 
      type: "GET", 
      data: "id_1="+id_1+"&id_2="+id_2, 
      url:"ajax/url.php" 
     }).done(function(data){ 
      var left= $(data).find("#left"); 
     $("#left").html(left); 
      alert(left); 


     }); 

मेरा url में, मैं सिर्फ एक सरल कोडिंग

if(isset($_GET["id_1"]) && isset($_GET['id_2'])){ 
    $id_1 = $_GET["id_1"]; 
    $id_2 = $_GET['id_2']; 

    $right= $dbh->prepare("SELECT COUNT(*) FROM table WHERE id_1 = ?"); 
    $right->execute(array($id_1)); 
    $left= $dbh->prepare("SELECT COUNT(*) FROM table WHERE id_1 = ? "); 
    $left->execute(array($id_2)); 


    <div id='right'><?php echo $right->fetchColumn();?></div> 

    <div id='left'><?php echo $left->fetchColumn();?></div> 



} 

जब मैं यह सब किया जाता है, इसे वापस अलर्ट [वस्तु वस्तु]

किसी को पता क्यों यह है कि करता है?

धन्यवाद!

संपादित करें:

मैं .done में कुछ कोडिंग जोड़ा (समारोह())

उत्तर

1

मैं मेरी समस्या हल है। मुद्दा यह था कि मुझे अपने div को दूसरे के अंदर लपेटने की ज़रूरत थी। उसके बाद find() विधि उन आईडी को कैप्चर करने और उचित ऑब्जेक्ट्स को वापस करने में सक्षम होगी।

if(isset($_GET["id_1"]) && isset($_GET['id_2'])){ 
    $id_1 = $_GET["id_1"]; 
    $id_2 = $_GET['id_2']; 

    $right= $dbh->prepare("SELECT COUNT(*) FROM table WHERE id_1 = ?"); 
    $right->execute(array($id_1)); 
    $left= $dbh->prepare("SELECT COUNT(*) FROM table WHERE id_1 = ? "); 
    $left->execute(array($id_2)); 

<div> // wrapper 
    <div id='right'><?php echo $right->fetchColumn();?></div> 

    <div id='left'><?php echo $left->fetchColumn();?></div> 
</div> 



} 
11

data एक वस्तु है। [object Object] केवल ऑब्जेक्ट की toString() प्रतिक्रिया है।

आपको ऑब्जेक्ट के डेटा तक पहुंचने की आवश्यकता है। इसकी सामग्री जांचने के लिए console.log(data) का उपयोग करने का प्रयास करें।

यह आपके PHP उदाहरण से दिखता है कि आपने कोड प्रदान नहीं किया है। आपके द्वारा पोस्ट किया गया कोड एक वाक्यविन्यास त्रुटि होगी।

इसके अलावा, अपनी प्रतिक्रिया के एमआईएम प्रकार की जांच करें। आप dataType को html के रूप में मजबूर करना चाहते हैं।

+2

+1 क्योंकि 'console.log()' आपका सबसे अच्छा दोस्त है। – msanford

+1

एसओ – Phil

+0

@ फिल पर एक प्रश्न पोस्ट करने से पहले सभी को [एसएससीसीई] (http://sscce.org/) पढ़ने के लिए मजबूर होना चाहिए @ फिल उत्कृष्ट लिंक! :) – alex

0

आपको ऑब्जेक्ट वापस मिल रहा है, न कि एक साधारण स्ट्रिंग ... ऐसा लगता है कि "डेटा" में आपके पृष्ठ "url.php" से प्रतिक्रिया होगी आप अपने "डेटा" के साथ क्या करने का प्रयास कर रहे हैं वास्तविक ऐप? मुझे लगता है कि अलर्ट सिर्फ एक डीबग उपाय है?

+0

हो रही है एक जे एस डिबगर ऊपर हुक (एक ब्राउज़र में) क्या तुम यहाँ के साथ काम करने के लिए है देखने के लिए है :-) – TGH

0

आप अपनी JSON प्रतिक्रिया कहां बना रहे हैं? मुझे लगता है कि यह fetchColumn() विधि है। यह सुनिश्चित करने के लिए दो बार जांचें कि आप json_encode() के साथ ठीक से तैयारी कर रहे हैं ...

जब आप सब कुछ डंप करते हैं तो आपको क्या मिलता है?

var_dump($right); 
var_dump($down); 
var_dump($right->fetchColumn()); 
var_dump($down->fetchColumn()); 
0

प्रयास करें ..

$response = ""; 
$response .="<div id='right'>".$right->fetchColumn()."</div>"; 
$response .="<div id='down'>".$down->fetchColumn()."</div>"; 

echo $response;exit; 
संबंधित मुद्दे