XMLHttpRequest () ve csv dosya çıktısı

1 Cevap php

Ben başarılı bir yeni pencerede bir html formu POST yayımlayarak bir csv dosyası oluşturmak ve ile yanıt PHP kullanabilirsiniz:

header('Content-type: text/csv');
header('Content-Disposition: attachment; filename="'.date("Ymdhis").'.csv"');
print get_lines();

Bununla birlikte, bu, açık ve boş bir pencere çıkar.

Ben (Content-Disposition tanınması) otomatik olarak pencereyi kapatmak için istemediği ya da tamamen pencere görmezden ve sadece onClick, veri dosyası oluşturmak) PHP form değişkenleri göndermek (XMLHttpRequest aramak ve daha sonra soracak tercih ederim kaydetmek için kullanıcı veya açık.

Ben denedim:

var xhReq = new XMLHttpRequest();
var parameters = "";

for ( i=0; i<formObj.elements.length; i++ ) {
  parameters += formObj.elements[i].name + "=" + encodeURI( formObj.elements[i].value ) + "&";
}

xhReq.open("POST", outputLocation, false);
xhReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhReq.setRequestHeader("Content-length", parameters.length);
xhReq.setRequestHeader("Connection", "close");
xhReq.send(parameters);

document.write(xhReq.responseText);

yanıt sadece ekrana metin olarak yazdırılır çünkü ancak bu çalışmıyor.

Ben yeni bir pencere açmadan yeni bir başlık () çağrısı vermek için tüm verileri aldıktan sonra ben gerçekten ne istediğini, - bu javascript kullanarak mümkün mü?

1 Cevap

You need to send the POST request in a new window in order to do this. I would suggest that you create a hidden form and set it's target attribute to _blank

Eğer bir indirme zorlamak için sunucu tarafında Content-disposition HTTP başlığını ayarlamanız gerekir.

Sen tarayıcısına bir metin dizesi döker ki, document.write çağırıyor, bu yapmak istediğiniz ne olası değildir.