Nasıl istemci tarafı javascript nesneleri indirmek için JSONP kullanabilirim?

0 Cevap php

Ben nesnelerin yerel bir dosya olarak kaydedilir javascript istemci tarafında almaya çalışıyorum. Ben bu mümkün olup olmadığından emin değilim.

Temel mimari şudur:

  1. Bir JSON nesnesi geri almak için ping harici API
  2. O nesne ile istemci tarafında çalışacak ve sonunda "beni indir" bağlantısı var
  3. Bu bağlantı bunu işler ve yerel dosyayı indirmek için kullanıcı istemi (gereken) bir mim türü application/json, onu geri gönderir, benim sunucu, veri gönderir.

Şu anda burada benim parçalarıdır:

Server Side Code

<?php
$data = array('zero', 'one', 'two', 'testing the encoding');  
$json = json_encode($data);  
//$json = json_encode($_GET['']); //eventually I'll encode their data, but I'm testing
header("Content-type: application/json"); 
header('Content-Disposition: attachment; filename="backup.json"'); 
echo $_GET['callback'] . ' (' . $json . ');';
?>

Relevant Client Side Code

$("#download").click(function(){
    var json = JSON.stringify(collection); //serializes their object
    $.ajax({
       type: "GET",
       url: "http://www.myURL.com/api.php?callback=?", //this is the above script
       dataType: "jsonp",
       contentType: 'jsonp',
       data: json,
       success: function(data){
           console.log( "Data Received: " + data[3] );
       }
    });
    return false;
});

Şu anda Firefox ile api.php siteyi ziyaret ettiğinizde, bu metin dosyasına sonuçların download.json ve bir indirme sorar, beklendiği gibi:

 (["zero","one","two","testing the encoding"]);

Ben AJAX çağrısı çalıştırmak için #download tıkladığında, bu kundakçı günlükleri

Data Received: testing the encoding

ki ben beklediğiniz hemen hemen budur. Ben, hangi büyük json dize alma ve seri hale ediyorum. Ben iki şey kaçırıyorum:

The Actual Questions

  1. Ne ben bir tarayıcıda sayfayı ziyaret ettiğinizde ben olsun aynı istemi-to-indirmek davranış almak için ne yapmak gerekiyor
  2. (Çok basit) Nasıl json nesne serialize sunucusuna gönderiliyor, sunucu tarafı erişebilirim? Ben GET dizide ne dizin bilmiyorum (biliyorum, aptal, ama neredeyse her şeyi denedim)

0 Cevap