Ajax olmadan javascript den php için karmaşık veri setleri gönder

6 Cevap php

Nasıl javascript AJAX kullanmadan, bir HTML tablosu örneğin, veri iletebilirsiniz?

I am lacking the understanding of how to actually pull data, format (into json likely), and pass it.

Ben indirmek için kullanıcıya bir dosyayı gönderir bir php fonksiyonu veri aktarmak için çalışıyorum. (Anladığım kadarıyla bir şey ajax işleyemez)

EDIT - oldukça karmaşık bazı verilerin ilanıyla bir örnek verin.

EDIT2 - Bir exmample ...

Bir ajax yanıt nesne aracılığıyla bir tablo doldurmak. Ne ben bir form yardımıyla bir php dosyasına gönderebileceğiniz bir forma biçimlendirme ediyorum bu verileri almak için iyi bir yol olurdu?

function getSalesByDeviceComplete(responseObj)
{
  var cashTotal = parseInt(responseObj.data[0].cash_total).toFixed(2);
  var creditTotal = parseInt(responseObj.data[0].credit_total).toFixed(2);
  var grandTotal = (parseInt(responseObj.data[0].cash_total) + parseInt(responseObj.data[0].credit_total)).toFixed(2);
  htmlStr += '<ul>';
    htmlStr += '    <li>';
    htmlStr += '        <table class="ui-widget ui-widget-content contentTable">';
    htmlStr += '            <thead>';
    htmlStr += '                <tr class="ui-helper-reset ui-widget-header">'; 
    htmlStr += '                    <th class="contentTableKey">Payment Device</th>';
    htmlStr += '                    <th class="contentTableValue">Sales</th>';
    htmlStr += '                </tr>';
    htmlStr += '            </thead>';
    htmlStr += '            <tbody>';

        htmlStr += '            <tr>';  
        htmlStr += '                <td class="contentTableKey">Credit Card</td>';
        htmlStr += '                <td class="contentTableValue">$'+creditTotal+'</td>';
        htmlStr += '            </tr>'; 
        htmlStr += '            <tr>';  
        htmlStr += '                <td class="contentTableKey">Cash</td>';
        htmlStr += '                <td class="contentTableValue">$'+cashTotal+'</td>';
        htmlStr += '            </tr>';

    htmlStr += '            </tbody>';
    htmlStr += '            <tfoot>';
    htmlStr += '                <tr>';
    htmlStr += '                    <td></td>';
    htmlStr += '                    <td id="salesTotal" class="contentTableValue">$'+grandTotal+'</td>';
    htmlStr += '                </tr>';
    htmlStr += '            </tfoot>';
    htmlStr += '        </table>';
    htmlStr += '    </li>';
    htmlStr += '</ul>';

    $("#contentData").html(htmlStr);
}

Yanıt nesnesi gibi bir şey görünüyor ...

<response_GetSalesByDevice> 
  <data> 
    <cash_total>0.00</cash_total> 
    <credit_total>0.00</credit_total> 
  </data> 
  <success>1</success> 
</response_GetSalesByDevice>

Ne yazık ki, bu daha much daha karmaşık birkaç tepki nesneler vardır.

6 Cevap

O (elbette hala çok güncel olan) yapılacak "kullanılan" yol:

http://www.w3schools.com/html/html_forms.asp

Tarayıcı üzerinden bir PHP komut dosyası için form verilerini gönderme yerine, uyumsuz bir HTTP isteği kullanarak.

"Eğer AJAX olmadan" Eğer XMLHttpRequest kullanarak olmadan Yani, daha sonra en yaygın yolu bir biçimde gizli bir alanı doldurmak tarafından.

Javascript kullanıcı her zamanki gibi formu gönderdiğinde, gizli değeri de geçirilir, daha sonra gizli alanını değiştirebilirsiniz.

Bu non-kritik ve o olmadığı zaman Javascript, ya da değil, zaman geçirilebilir ekran boyutu vs üzerine istatistikler, toplama gibi şeyler için kullanılabilir.

You seem to have some crossed understanding of what AJAX and JSON are/do or most likely I do not understand what you mean from your question. If you do not want to use ajax you will have to use the normal submit just like the two people above me suggested.

Veri görece küçük bir miktar gönderiyor Ancak, daha sonra bir dosya ile cevap verecektir ajax ile PHP komut için bir GET isteği göndermek mümkün olabilir. Gibi bir şey:

http://yourserver.com/test.php?getVariable=29472938472

Test.php script looks at the get variable and returns the associated file. Entirely possible with AJAX.

Ben yanlış yolda gidince söyle lütfen.

Bunun yerine, doğrudan veri çağırmak, sen içeren bir php dosyası aramak gerekir:

/myphpfilethatgetsstuff.php

echo "<pre>";
print_r($json_output);
echo "</pre>";
?>

Ardından dosya ve html çıktı hem oluşturarak veri üzerinde yineleme.

Ana dosyasında bu javascript kullanın:

$('div#results').load("http://mydomain.com/myphpfilethatgetsstuff.php");

Bu bir yerde div ile:

<div id="results"></div>

ve bu bağlantı:

<a href="http://mydomain.com/mynewfilewithsessionid.xml">Your File</a>

One alternative to XMLHttpRequest objects is making asynchronous calls via an iFrame imbedded in the page. This is a documented "AJAX" design pattern when xmlhttprequests cannot be used. There are some components for jquery (ie, AJAX Upload) that utilize this method.

Dokümantasyon ve burada örnek:

http://ajaxpatterns.org/IFrame_Call