Dış PHP sayfası JQuery getJSON

3 Cevap php

I've been trying to make an ajax request to an external server. I've learned so far that I need to use getJSON to do this because of security reasons ?

Now, I can't seem to make a simple call to an external page. I've tried to simplify it down as much as I can but it's still not working. I have 2 files, test.html & test.php

Benim test.html test için localhost için böyle bir çağrı yapar:

    $.getJSON("http://localhost/OutVoice/services/test.php", function(json){
	alert("JSON Data: " + json);
});

ve benim dnm.php basit bir 'test' dönmek istiyorum:

$results = "test";
echo json_encode($results);

I'm probably making some incredible rookie mistake but I can't seem to figure it out. Also, if this works, how can I send data to my test.php page, like you would do like test.php?id=15 ?


The test.html page is calling the test.php page on localhost, same directory I don't get any errors, just no alert ..

3 Cevap

Bu could Eğer test.php bir geri arama yok ki olabilir. Ayrıca, json_encode sadece bir dizi kabul eder:

$results = array("key" => "value");
echo $_GET['callback'] . '(' . json_encode($results) . ')';
// the callback stuff is only needed if you're requesting from different domains

jQuery otomatik http:// kullandığınızda (yani komut dosyası etiketleri yerine XMLHttpRequest kullanarak) JSONP geçer. Eğer aynı etki Test.html ve test.php varsa, göreli yolları (ve hiçbir geri çağrıları) kullanmayı deneyin.

MOFF yanıt ile dikkatli olun. Bu ortak bir XSS açığı var: http://www.metaltoad.com/blog/using-jsonp-safely

Basit çözüm daha sonra kullandığınız yöntemler, standart bir ajax arama çalışması gerektiğini daha fazla esnekliğe sahip, sizin test.php dosyası için herhangi bir çıkıştan önce aşağıdaki kodu eklemek olacaktır.

header ('Access-Control-Allow-Origin: *');

Sizin kontrolünüz dışında bir sunucudan veri alma Ancak, json arama şey kullanın.