json veri almaya ajaxCall undefined hatası

4 Cevap php

my problem is that I can not solve this problem

Ben php komut dersek, ben olsun tüm tanımsız bir hatadır

Bu test etmek için kullanabileceğiniz VE koddur

this is the original code from the creator that is giving me a headache

function startJsonSession(){     
    $.ajax({        url: "jsontest.php?action=startjson",       
    	cache: false,     
        dataType: "json",   
         complete: function(data) {             
    	     username = data.username;               
    		  alert(username);      
    	 }    
    });
}

//phpscript

if ($_GET['action'] == "startjson") { startJson(); } 


    function startJson() {   

header('Content-type: application/json'); 
    $items = '';     
echo json_encode(array(          
     "username" => "bob",    
    "items" => array( "item1" => "sandwich",   
    "item2" => "applejuice"  
    )     
    )); 


 }

teşekkürler, Richard

edited my question because:
this function returns the json data in a different way and therefore the solution presented below, does not have the same outcome.

function startChatSession() {
    $items = '';
    if (!empty($_SESSION['openChatBoxes'])) {
    	foreach ($_SESSION['openChatBoxes'] as $chatbox => $void) {
    		$items .= chatBoxSession($chatbox);
    	}
    }


    if ($items != '') {
    	$items = substr($items, 0, -1);
    }

header('Content-type: application/json');
?>
{
    	"username": "<?php echo $_SESSION['username'];?>",
    	"items": [
    		<?php echo $items;?>
        ]
}

<?php


    exit(0);
}

4 Cevap

Ben kodu ile yeniden ve bunu anladım. Iade edilen nesne türü XMLHttpRequest olduğunu. Onun veri ile json dize tutan responseText adında bir özelliği var.

bu yüzden bu işleri ..

var decodedData = eval("(" + data.responseText + ")");
             	username = decodedData.username;               
	                  alert(username);

Biraz dağınık ama hile yapar :-)

Bu yardımcı olur ps, ben firefox firebug kullanarak ve js kodunda kesme noktası yapışmasını bunu anladım

Edited below: Without wanting to do the eval, you could use this and it works:

$.getJSON("json.php?action=startjson",       

	        function(data) {             
             	username = data.username;               
	                  alert(username);      
	         }    
	    );

Ben başarı fonksiyonu ile ne yaptığını göstermek için Düzenlendi:

    $.ajax({        url: "json.php?action=startjson",       
	        cache: false,     
	        dataType: "json",   
	         success: function(data) {             

             	username = data.username;               
	                  alert(username);      
	         }    
	    });

Is username a global variable? If not you should prepend the "var" keyword.

;> var username = data.username - = data.username kullanıcı adı

Sonunda ben çalışma var.

Ben kundakçı yüklü ve php komut yerine json kapalı html başlıklarını dönen olduğunu gördüm.

Tüm bu çalışma başlatan ani kapalı, gerçekten sorunun ne olduğunu bilmek istiyorum, ama size söyleyemem.

Çok uzun, David yapıştırma için neyse, teşekkürler

Ayrıca ne anlamıyorum bunun yerine xml ile bitti gibi geri yankılanan, php kapalı mod patlak olduğunu

?>
{
        "username": "<?php echo $_SESSION['username'];?>",
        "items": [
            <?php echo $items;?>
        ]
}

<?php

Bu (literal dizi içeren nesne dizisi) yukarıdaki gibi aynı mı?

echo json_encode(array(          
             "username" => "bob",    
             "items" => $items
        )     
             ));  
 }