将PHP数组传递给javascript变量,然后传递给服务器

passing php array to javascript variable, then to server

本文关键字:然后 服务器 变量 javascript PHP 数组      更新时间:2023-09-26

我知道这个问题在这里已经被问过很多次了,但我就是想不明白。我肯定这很简单,但我一直在绞尽脑汁。我的搜索结果是php数组,显示在jquery窗口中。我需要最终将它们返回到服务器,但首先需要将它们传递给jquery变量。这就是我被卡住的地方。

你会看到我已经尝试通过$book_title,试图将其传递给jquery变量"title"

<script>
      $(function() { 
      $( "#dialog" ).dialog({
        height: 550, width: 450});
        $( ".btn" ).click(function(){
        //assign values to each variable
        //var title = $("#returnvalues").val();
        var title = <?php echo json_encode($book_title);?>;
        var author = $("#returnvalues").val();
        var published = $("#returnvalues").val();
        var description = $("#returnvalues").val();
        var pages = $("#returnvalues").val();
        var publisher = $("#returnvalues").val();
        var ISBN = $("#returnvalues").val();
       //book_title = $item['volumeInfo']['title'];
       $.ajax({
         type: "POST",
         url: 'book-meta.php',
         dataType: 'json',
         //assign values to the variables to be passed to the server via data
         data: { title : title, author : author, published : published, 
         description : description, pages : pages, publisher : publisher, ISBN : ISBN},
         success: function(data)
             {
             //alert(data);
             //identify the variables for unique handing on the server side
             $("input[name='bbp_topic_title']").val(data.title);
             $("input[name='bbp_extra_field1']").val(data.author);
             $("input[name='bbp_extra_field2']").val(data.published);
             $("input[name='bbp_extra_field3']").val(data.description);
             $("input[name='bbp_extra_field4']").val(data.pages);
             $("input[name='bbp_extra_field5']").val(data.publisher);
             $("input[name='bbp_extra_field6']").val(data.ISBN);
             //$("#displayResults").html(data);
             },
             error: function(errorThrown){
             alert('error');
             }
             });
      $( "#dialog" ).dialog( "close" );  
      });
      });
      </script>  
            <strong><p style="font-size: 16px; text-align: center";>Top 10 Results for &quot;<?php echo @$_POST['q']; ?>&quot;</p></strong> 
        <strong><p style="font-size: 14px; text-align: center";>choose a book to select as your topic</p></strong>&nbsp;
        <table style="width:400px">
        <col width="325">
        <col width="75">
            <?php $i=0; foreach ($data['items'] as $item) { $i++; ?>     
                  <tr>
            <td>
                       <strong><u><div style="font-size: 14px";><?php printf($item['volumeInfo']['title'])?></u></div></strong>
                         <strong>Author: </strong><?php printf( $item['volumeInfo']['authors'][0])?><br />
                         <strong>Published: </strong><?php printf( $item['volumeInfo']['publishedDate']); ?><br />                       
               <strong>Page(s): </strong><?php printf( $item['volumeInfo']['pageCount']); ?><br />
                         <strong>Publisher: </strong><?php printf( $item['volumeInfo']['publisher']); ?><br />
                         <strong>Category: </strong><?php printf( strtolower($item['volumeInfo']['printType']).', '.strtolower($item['volumeInfo']['categories'][0])); ?>&nbsp;&nbsp;
               <strong>ISBN: </strong><?php printf( $item['volumeInfo']['industryIdentifiers'][0]['identifier']); ?></td>
            <td><p><input type="submit" method="post" name="selectbook" value="Select" class="btn" id="returnvalues" /></p>
            <img src="<?php printf( rawurldecode($item['volumeInfo']['imageLinks']['smallThumbnail'])); ?>" />
                    </td>
            <tr><td style="width:420px"><p><strong>Description: </strong><?php printf( $item['volumeInfo']['description']); ?><br /></p></td>
            <?php $book_title=$item['volumeInfo']['title'];
            //$book_meta=array($item['volumeInfo']['title']=>"$book_title",$item['volumeInfo']['authors'][0]=>"$book_author");
            //print(json_encode($book_meta));

任何帮助都是感激的。如果这被标记为重复的问题,也请给这个新手一些具体的方向。谢谢。

我明白了!感谢XQDev和Uttara的帮助!我必须在显示php结果的循环中创建一个单独的脚本。在这个单独的脚本中,我只声明了javascript变量。

<script>
var title = <?php echo json_encode($book_title); ?>;
</script> 

问题已解决!希望这篇帖子能帮助将来遇到类似问题的人。

var title = "<?php echo $book_title; ?>"可能导致您想要的结果。

可以在赋值后使用alert(title)来检查结果。

顺便说一下,你的变量不是"jQuery变量"。它们是普通的Javascript变量。但是您可以通过使用jQuery方法传递和访问它们。

但是:你的方式,如果$book_title包含一个字符串,应该是好的。到底是什么不起作用?

如果你试图将php数组赋值给javascript变量,那么执行

var title = <?php echo json_encode($book_title); ?>;

考虑到$book_title是一个数组

Eg: <?php 
   $book_title = array('one', 'two');
?>
javascript: title = ['one', 'two']
相关文章: