JQuery PHP Fonksiyonu Çağrı (var)

5 Cevap php

Ben kendim çözemezsiniz küçük bir sorunla karşı karşıya ediyorum.

Ben bu php işlevi vardır:

function intervalo_manha(){
    $que="select id_intervalo,data_15
          from intervalo_manha
          order by id_intervalo";
        $re=mysql_query($que);
        $object.="<select>";
        $object.="<option></option>";
    while(list($id_intervalo, $data_15)=mysql_fetch_row($re))
    {
       $object.= "<option value=\"".$id_intervalo."\">".$data_15."</option>"; 
    }
        $object.="</select>";
return $object;
}

Bu fonksiyon veritabanındaki bilgilerle bir seçme döndürür.

Ben de bu fonksiyonu js var:

$(document).ready(function() {
              var destTable = $("#dataTable");
              $("#btnAdd").click(function() {
               var newRow = $("<tr style='margin-left:-60px'><td><INPUT type='checkbox' name='chk'/></td><td><INPUT type='text' name='txt[]' id='txt'/></td><td></td></tr>");
               $("#dataTable").append(newRow);
                newRow.find('input').autocomplete("get_cols_name.php", {
                    width: 260,
                    matchContains: true,
                    selectFirst: false
                    });
                });
            });

Bu benim tabloya yeni bir satır ekler ve her yeni giriş için otomatik tamamlama "aktive" edecek. Ne yapmak istiyorum bunun yerine, bir:

var newRow = $("<tr style='margin-left:-60px'><td><INPUT type='checkbox' name='chk'/></td><td><INPUT type='text' name='txt[]' id='txt'/></td><td></td></tr>");

Ben böyle bir şey istiyorum:

var newRow = $("<tr style='margin-left:-60px'><td><INPUT type='checkbox' name='chk'/></td><td><INPUT type='text' name='txt[]' id='txt'/></td><td><?php echo intervalo_manha(); ?></td></tr>");

Php fonksiyonunu çağırarak doğrudan hiçbir şey döner, ve ben bir şey yapamam. Bunu gerçekleştirmek için herhangi bir yolu var mı?

Teşekkür ederim

5 Cevap

Bir arkadaşımın yardımıyla benim sorunum çözüldü.

Temelde ne biz yaptık.

Biz "php echo" ile bir div oluşturun:

<div id="intervalo-manha"><?php echo intervalo_manha(); ?></div>

Sonra css ile gizlendiği ettik:

<style type="text/css">
    #intervalo-manha {
        display: none;
    }
</style>

Bundan sonra biz sadece jQuery işlevi de div seslendi:

var newRow = $("<tr style='margin-left:-60px'>...<td>" + $("#intervalo-manha").html() + "</td></tr>");

Ben bu kadar kolay olabileceğini hiç düşünmemiştim. :)

Bana ipuçları ve öneriler verdi herkese teşekkür ederiz.

selamlar

tüm kodlar aynı sayfada ise, deneyin

echo "var newRow = $(\"<tr style='margin-left:-60px'><td><INPUT type='checkbox' name='chk'/></td><td><INPUT type='text' name='txt[]' id='txt'/></td><td>";
echo intervalo_manha();
echo "</td></tr>\");";

. Siz $ () otomatik tamamlama () kullanıyor; get_coll_name.php için. . $ () Otomatik tamamlama (); büyük olasılıkla PHP çağırmak için AJAX kullanan bir jQuery UI veya jQuery eklentisi. PHP aramak için AJAX kullanmanız gerekecektir. Sen) (yöntem intervalo_manha belirtebilirsiniz edemez, bir sayfayı belirtmek gerekir. Eğer bir çerçeve kullanıyorsanız, çerçeve size çağrı yöntemleri belirlemenizi sağlar gibi, Zend gibi, bu kolaydır.

Bu kodu deneyin: (Ben burada ekleyebilirsiniz değilim sayfa sice tamamlamak için html etiketi ekleyiniz)

<?php 

function intervalo_manha(){ return 'here is my data';

$que="select id_intervalo,data_15
      from intervalo_manha
      order by id_intervalo";
    $re=mysql_query($que);
    $object.="<select>";
    $object.="<option></option>";
while(list($id_intervalo, $data_15)=mysql_fetch_row($re))
{
   $object.= "<option value=\"".$id_intervalo."\">".$data_15."</option>"; 
}
    $object.="</select>";

return $object; }

if($_GET['get_data']) { echo intervalo_manha(); exit; }

>

<head>
    <title>test</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" type="text/javascript"></script>

    <script type="text/javascript">
    $(document).ready(function() {
        var destTable = $("#dataTable");
        $("#btnAdd").click(function() {

         var newRow = $("<tr style='margin-left:-60px'><td><INPUT type='checkbox' name='chk'/></td><td><INPUT type='text' name='txt[]' id='txt'/></td><td class='d_value'>...retrieving data...</td></tr>");
          $("#dataTable").append(newRow);

          //newRow.find('input').autocomplete("get_cols_name.php", {
           //   width: 260,
            //  matchContains: true,
             // selectFirst: false
              //});
             $.get('index.php?get_data=1', {}, function(data) {
              newRow.find('.d_value').html(data);
             });
         });
      });

    </script>
</head>
<body>
<input type="button" value="click me" id="btnAdd" />
<table id="dataTable">

</table>
</body>

Belki ajax fonksiyonlarını kullanmak daha iyi olacaktır. Bir isim ver. Php-script aramak ve çıkış veri olsun.

$.ajax(/*...*/);

?