2016-04-14 25 views
0

uzun zamandır cevap veren, ilk kez soru-asker. aşağıdaki gibiJavascript .php dosya referansı ile işlev girmiyor

<div> 
    <form id="search" action="" method="POST"> 
     <input type="text" id="str" name="str" value="" /> 
     <input type="submit" value="search" /> 
    </form> 
    <div id="search_results"></div> 
</div> 

js komut dosyası::

ben sayfa altbilgi başvuruda bulunulan js küçük bir pasajı yapılandırarak ediyorum: Burada

<script type='text/javascript' src='http://test.site.com/wp-content/themes/spacious/js/jsfile.js?ver=1.0.5'></script> 

girişler için html

(function func() { 
    $("#search").bind('submit', function() { 
     var value = $('#str').val(); 

     $.post('db_query.php', { 
      value: value 
     }, function (data) { 
      $("#search_results").html(data); 
     }); 

     return false; 
    }); 
}); 

php dosyası aşağıdaki gibi:

<?php 
    try { 
     $db = new PDO('sqlsrv:Server=xx.xx.xx.xx;Database=xxxx','user','pass'); 
    } 
    catch (Exception $e) { 
     echo 'PDO connection error: ' . $e->getMessage(); 
     exit(1); 
    } 

    $sql=$db->prepare("SELECT top 20 Timestamp,Information,Location FROM Table WHERE JobReference = :val"); 
    $sql->execute(array(':val'=>$_REQUEST['value'])); 

    echo '<table>'; 
    echo '<th>Date Time</th><th>Information</th><th>Location</th>'; 

    while ($row=$sql->fetch()) 
    { 
     echo "<tr><td>$row[Timestamp]</td><td>$row[Information]</td><td>$row[Location]</td></tr>"; 
    } 
    echo '</table>'; 
?> 

Hata ayıklamak için Chrome'u kullanmaya çalıştığımda, ilk '(' 'sonra durur ve ardından işlevin sonuna kadar atlar. İlk başta .php dosya referansından kaynaklandığını düşündüm, ama sanki vurmuyor bile değil mi?

ben ... bu nereye gitmek Cameron

çok teşekkür ederiz bilmiyorum.

+0

('o '' başlangıçta '' fonksiyon func() {'. Ayrıca ekstra' '' fonksiyonun sonunda kaldırabilirsiniz. – larsAnders

cevap

0

@Nano cevap ek olarak, böyle düzeltebilirsiniz: Sen gerekmez

(function($) { //pass $ as jQuery in this scope 
$("#search").bind('submit', function() { 
    var value = $('#str').val(); 
    $.post('db_query.php', { 
     value: value 
    }, function (data) { 
     $("#search_results").html(data); 
    }); return false; 
    }); 
})(jQuery); //$ is jQuery 
+0

Maalesef bu, Nano'nun yukarısına göre parantez içinde jQuery olmadan aynı hatayı verdi. - EDIT - İlk parantez içinde $ özledim - şimdi bulunamadı PHP dosyası var .. –

+0

Tuhaf bir şey olabilir. –

1

Sadece func adlı bir JavaScript İşlevini bildiriyorsunuz. Ancak, kodunuzun çalışması için bu işlevi de çağırmanız gerekir.

bu gibi fonksiyonun sonuna başka braket ekleyin:

(function func() { 
$("#search").bind('submit', function() { 
    var value = $('#str').val(); 
    $.post('db_query.php', { 
     value: value 
    }, function (data) { 
     $("#search_results").html(data); 
    }); return false; 
    }); 
})(); 
+0

"func" yi de kaldırabilirsiniz. Bir kapatma oluşturmak için kodunuzu '(function() {/ * in burada * /})()' içine koyarsınız. – PHPglue

+0

Vay canına hızlısın - bu, imleci işleve taşıdı, sonra 2. satırdaki başka bir hatayı filizledi: Yakalanmayan TypeError: $ bir fonksiyon değil –

+0

Evet, Fonksiyon ismini de kaldırabilirdi. Ancak kodun çalışması için gerekli değildir. Belki de daha sonra işlev ismine ihtiyacı vardır. – Nano