У меня есть результаты поиска, отправленные в окно jquery – 10, если быть точным. Если пользователь выбирает 4-й результат, я хотел бы, чтобы этот конкретный результат был присвоен переменной javascript. В нижней части нижеприведенного кода мне кажется, что мне нужно как-то индексировать переменные javascript? Затем в верхней части этого кода я думаю, что могу назначить номер, который выбрал пользователь. Я уже понял, как получить номер, который пользователь выбирает. Также в нижней части приведенного ниже кода вы увидите, где я прокомментировал свою попытку индексирования переменных javascript для соответствия тем же самым переменным php.
<script> $(function() { $( "#dialog" ).dialog({height: 550, width: 450}); $( ".submit" ).click(function(){ //if(this.id.indexOf('select')>-1) {var id = (this.id.split(" "))[1]; console.log(id);} //bookSelect = id; $.ajax({ type: "POST", url: 'book-meta.php', async:true, dataType: 'json', //assign values to the variables to be passed to the server via data data: { B : B, cover : cover, title : title, author : author, published : published, ISBN : ISBN, description : description, pages : pages, publisher : publisher}, success: function(data) { //identify the variables for unique handing on the server side, this is //how the book data gets to the input fields for bbpress forums $("input[name='bookCover']").val(data.cover); $("input[name='bbp_topic_title']").val(data.title); $("input[name='bookAuthor']").val(data.author); $("input[name='bookPublished']").val(data.published); $("input[name='bookDescription']").val(data.description); $("input[name='bookPages']").val(data.pages); $("input[name='bookPublisher']").val(data.publisher); $("input[name='bookISBN']").val(data.ISBN); //$("input[name='selection']").val(data.bookSelect); //alert(B); }, error: function(errorThrown){ alert('error'); }, }); $( "#dialog" ).dialog( "close" ); }); }); </script> <strong><p style="font-size: 16px; text-align: center";>Top 10 Results for "<?php echo @$_POST['q']; ?>"</p></strong> <strong><p style="font-size: 14px; text-align: center";>choose a book to select as your topic</p></strong> <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']); $b_title[$i] = $item['volumeInfo']['title']?></u></div></strong> <strong>Author: </strong><?php printf( $item['volumeInfo']['authors'][0]); $b_author[$i] = $item['volumeInfo']['authors'][0]?><br /> <strong>Published: </strong><?php printf( $item['volumeInfo']['publishedDate']); $b_published[$i] = $item['volumeInfo']['publishedDate'] ?><br /> <strong>Page(s): </strong><?php printf( $item['volumeInfo']['pageCount']); $b_pages[$i] = $item['volumeInfo']['pageCount'] ?><br /> <strong>Publisher: </strong><?php printf( $item['volumeInfo']['publisher']); $b_publisher[$i] = $item['volumeInfo']['publisher'] ?><br /> <strong>Category: </strong><?php printf( strtolower($item['volumeInfo']['printType']).', '.strtolower($item['volumeInfo']['categories'][0])); ?> <strong>ISBN: </strong><?php printf( $item['volumeInfo']['industryIdentifiers'][0]['identifier']); $b_ISBN[$i] = $item['volumeInfo']['industryIdentifiers'][0]['identifier'] ?></td> <td><p><?php echo "<input type='submit' method='post' name='submit' value='Select' class='submit' id='select $i' />"; ?></p> <img src="<?php printf( rawurldecode($item['volumeInfo']['imageLinks']['smallThumbnail'])); $b_cover[$i] = $item['volumeInfo']['imageLinks']['smallThumbnail'] ?>" /> </td> <tr><td style="width:420px"><p><strong>Description: </strong><?php printf( $item['volumeInfo']['description']); $b_description[$i] = $item['volumeInfo']['description'] ?><br /></p></td> </tr> </tr> <script> $( ".submit" ).click(function(){ if(this.id.indexOf('select')>-1) {var id = (this.id.split(" "))[1]; console.log(id);} B = id; }); //for(var i = 0, len = 11; i < len; i++) //var title = []; var cover = <?php echo json_encode($b_cover[3]); ?>; //var title[i] = <?php echo json_encode($b_title[$i]); ?>; var title = <?php echo json_encode($b_title[3]); ?>; var author = <?php echo json_encode($b_author[3]); ?>; var published = <?php echo json_encode($b_published[3]); ?>; var description = <?php echo json_encode($b_description[3]); ?>; var pages = <?php echo json_encode($b_pages[3]); ?>; var publisher = <?php echo json_encode($b_publisher[3]); ?>; var ISBN = <?php echo json_encode($b_ISBN[3]); ?>; </script>
Если кто-то ищет это, я нашел ответ на свой вопрос. Два предупреждения: 1) этот ответ выглядит беспорядочным для меня. Вероятно, есть более простой способ. 2) @elclanrs правильно в своем комментарии; Я планирую очистить этот код до отдельных файлов. Если вы посмотрите на вышеупомянутый вопрос, я изменил нижний скрипт и изменил переменные в верхнем скрипте. Вот нижний скрипт (я использовал массив javascript foreach и поместил все возможные результаты в массив – возможно, есть способ сделать это, не перечисляя их всех?). Для краткости я включил только первые две переменные массивы.
<script> $( ".submit" ).click(function(){ //get the id number, which is indexed for each result, of the button the user selects //the variable B is decremented 1 from id because javascript arrays begin with [0] if(this.id.indexOf('select')>-1) {var id = (this.id.split(" "))[1]; console.log(id);} B = id - 1; }); //create an array for all 10 results. There is probably a cleaner way to do this var b_cover = [<?php echo json_encode($b_cover[1]); ?>,<?php echo json_encode($b_cover[2]); ?>,<?php echo json_encode($b_cover[3]); ?>,<?php echo json_encode($b_cover[4]); ?>, <?php echo json_encode($b_cover[5]); ?>,<?php echo json_encode($b_cover[6]); ?>,<?php echo json_encode($b_cover[7]); ?>,<?php echo json_encode($b_cover[8]); ?>, <?php echo json_encode($b_cover[9]); ?>,<?php echo json_encode($b_cover[10]); ?>]; //this is the javascript foreach b_cover.forEach(function(entry){console.log(entry);}); var b_title = [<?php echo json_encode($b_title[1]); ?>,<?php echo json_encode($b_title[2]); ?>,<?php echo json_encode($b_title[3]); ?>, <?php echo json_encode($b_title[4]); ?>,<?php echo json_encode($b_title[5]); ?>,<?php echo json_encode($b_title[6]); ?>, <?php echo json_encode($b_title[7]); ?>,<?php echo json_encode($b_title[8]); ?>,<?php echo json_encode($b_title[9]); ?>,<?php echo json_encode($b_title[10]); ?>]; b_title.forEach(function(entry){console.log(entry);});
И вот как переменные назначаются в верхнем скрипте:
$.ajax({ type: "POST", url: 'book-meta.php', async:true, dataType: 'json', //assign values to the variables to be passed to the server via data, according to their B position //within the foreach array. data: { B : B, cover : b_cover[B], title : b_title[B], author : b_author[B], published : b_published[B], ISBN : b_ISBN[B], description : b_description[B], pages : b_pages[B], publisher : b_publisher[B]}, success: function(data)