Ben bir singe kimliği dizesi kullanarak farklı bir etki alanında başka bir sunucudan enlem ve boylam değerleri çekmeye çalışıyorum. Ben JQuery ile çok aşina değilim, ama aynı kökeni soruna alma hakkında gitmek için en kolay yol gibi görünüyor. Ben iframe kullanmak mümkün ve ben bu elimi zorluyor bu javascript çalıştıran sunucuda PHP yükleyemezsiniz.
Benim sorguları düzgün geçiyor gibi görünen, ama geri hiçbir sonuç alamıyorum. Ben muhtemelen burada en bariz hataları tanımıyor gibi görerek, burada kimse yardımcı olabilecek bir fikir olabilir umuyordum.
Benim javascript fonksiyonu:
var surl = "http://...omitted.../pull.php";
var idnum = 5a; //in practice this is defined above
alert("BEFORE");
$.ajax({
url: surl,
data: {id: idnum},
dataType: "jsonp",
jsonp : "callback",
jsonp: "jsonpcallback",
success: function (rdata) {
alert(rdata.lat + ", " + rdata.lon);
}
});
alert("BETWEEN");
function jsonpcallback(rtndata) {
alert("CALLED");
alert(rtndata.lat + ", " + rtndata.lon);
}
alert("AFTER");
Benim javascript çalıştırıldığında, ÖNCE, ARASINDAKİ ve uyarılar SONRA görüntülenir. DİYE ve diğer jsonpCallback uyarılar gösterilmemiştir.
Jsoncallback işlev adı olmuştur olmadığını anlatmak için başka bir yolu var mı?
Aşağıda ikinci sunucu üzerinde çalışan var PHP kodudur. Bu komut dosyasını çalıştırdığınızda ben söyleyebilirim sadece bu yüzden benim veritabanına sayısı tablo ekledik. Ben javascript aramak her zaman, sayımı ekstra bir öğe takılı olmuştur ve kimlik numarası doğru.
<?php
header("content-type: application/json");
if (isset($_GET['id']) || isset($_POST['id'])){
$db_handle = mysql_connect($server, $username, $password);
if (!$db_handle)
{
die('Could not connect: ' . mysql_error());
}
$db_found = mysql_select_db($database, $db_handle);
if ($db_found)
{
if (isset($_POST['id'])){
$SQL = sprintf("SELECT * FROM %s WHERE loc_id='%s'", $loctable, mysql_real_escape_string($_POST['id']));
}
if (isset($_GET['id'])){
$SQL = sprintf("SELECT * FROM %s WHERE loc_id='%s'", $loctable, mysql_real_escape_string($_GET['id']));
}
$result = mysql_query($SQL, $db_handle);
$db_field = mysql_fetch_assoc($result);
$rtnjsonobj -> lat = $db_field["lat"];
$rtnjsonobj -> lon = $db_field["lon"];
if (isset($_POST['id'])){
echo $_POST['jsonpcallback']. '('. json_encode($rtnjsonobj) . ')';
}
if (isset($_GET['id'])){
echo $_GET['jsonpcallback']. '('. json_encode($rtnjsonobj) . ')';
}
$SQL = sprintf("INSERT INTO count (bullshit) VALUES ('%s')", $_GET['id']);
$result = mysql_query($SQL, $db_handle);
$db_field = mysql_fetch_assoc($result);
}
mysql_close($db_handle);
} else {
$rtnjsonobj -> lat = 404;
$rtnjsonobj -> lon = 404;
echo $_GET['jsonpcallback']. '('. json_encode($rtnjsonobj) . ')';
}?>
Bu PHP tarafından döndürülen jsonp doğru olup olmadığını tam olarak emin değilim. Ben herhangi bir parametre dahil olmadan PHP komut doğrudan gittiğinizde, ben aşağıdakileri olsun.
({"lat":404,"lon":404})
Geri çağırma işlevi dahil değildir, ancak asıl çağrının dahil değilken bu kadar beklenebilir.
Herkes burada yanlış ne olabilir bir fikriniz var mı?
Şimdiden teşekkürler!