Я пытаюсь добавить несколько динамических строк одним нажатием кнопки. Пример, с которым я работал, работал нормально, но по какой-то причине я думаю, что то, как я использую PHP внутри Javascript, ломает все. И я продолжаю получать эту ошибку на консоли.
Uncaught SyntaxError: неожиданный идентификатор
Вот мой HTML-код и js-код. Есть ли способ решить эту проблему?
<table class = "table table-bordered" id = "orderItems2">
<thead>
<tr>
<th>Product Code</th>
<th>WSP</th>
<th>Margin</th>
<th>DP</th>
<th>Std Bonus</th>
<th>Min Qty</th>
<th>Spcl Bonus</th>
<th>Case Size</th>
<th>Cases</th>
<th>Qty</th>
<th>Free Issues</th>
<th>Total</th>
<th>Current Qty</th>
<th>Stock Value</th>
</tr>
</thead>
</table>
Это статическая строка, которая у меня есть, и я пытаюсь создать эту строку, когда нажимаю кнопку добавления.
<tr class = "distributorItemDetails">
<td>
<div class = "form-group">
<select class = "item-details form-control select2" name = "items[1][product_code]" style = "width: 100%;">
<option selected = "selected" value = "" required>Select Product</option>
<?php foreach ($products as $product):?>
<option
data-wholesaleprice = "<?= h($product->whole_sale_price)?>"
data-distributormargin = "<?= h($product->distributor_margin)?>"
data-stdbonus = "<?= h($product->standard_bonus_minimum_qty.":".$product->standard_bonus_free_issues)?>"
data-standard_bonus_minimum_qty = "<?= h($product->standard_bonus_minimum_qty)?>"
data-standard_bonus_free_issues = "<?= h($product->standard_bonus_free_issues)?>"
data-minqty = "<?= h($product->minimum_qty_to_apply_special_bonus)?>"
data-scplbonus = "<?= h($product->special_bonus_minimum_qty.":".$product->special_bonus_free_issues)?>"
data-special_bonus_minimum_qty = "<?= h($product->special_bonus_minimum_qty)?>"
data-special_bonus_free_issues = "<?= h($product->special_bonus_free_issues)?>"
data-casesize = "<?= h($product->case_size)?>"
value = "<?= h($product->product_code)?>" required><?= h($product->product_code)?>
</option>
<?php endforeach; ?>
</select>
</div>
</td>
<td>
<div class = "form-group">
<input type = "number" class = "form-control val-wholesaleprice" name = "items[1][wholesale_price]" required min = "0" step = "any" readonly>
</div>
</td>
<td>
<div class = "form-group">
<input type = "number" class = "form-control val-distributormargin" name = "items[1][distributor_margin]" required min = "0" step = "any" readonly>
</div>
</td>
<td>
<div class = "form-group">
<input type = "number" class = "form-control val-distributorprice" name = "items[1][distributor_price]" readonly>
</div>
</td>
<td>
<div class = "form-group">
<input type = "text" class = "form-control val-sb" name = "items[1][standard_bonus]" readonly>
</div>
</td>
<td>
<div class = "form-group">
<input type = "number" class = "form-control val-minqty" name = "items[1][min_qty]" readonly>
</div>
</td>
<td>
<div class = "form-group">
<input type = "text" class = "form-control val-scplbonus" name = "items[1][special_bonus]" readonly>
</div>
</td>
<td>
<div class = "form-group">
<input type = "number" class = "form-control val-casesize" name = "items[1][case_size]" readonly>
</div>
</td>
<td>
<div class = "form-group">
<input type = "number" class = "form-control val-noofcases" name = "items[1][no_of_cases]">
</div>
</td>
<td>
<div class = "form-group">
<input type = "number" class = "form-control val-totalqty" name = "items[1][total_qty]" readonly>
</div>
</td>
<td>
<div class = "form-group">
<input type = "number" class = "form-control val-freeissues" name = "items[1][total_free_issues]" readonly>
</div>
</td>
<td>
<div class = "form-group">
<input type = "number" class = "form-control val-totalprice" name = "items[1][total_value]" readonly>
</div>
</td>
<td>
<div class = "form-group">
<input type = "number" class = "form-control val-currentqty" name = "items[1][balance_stock]">
</div>
</td>
<td>
<div class = "form-group">
<input type = "number" class = "form-control val-stockvalue" name = "items[1][stock_value]" readonly>
</div>
</td>
</tr>
Кнопка HTML, предполагающая добавление новой строки
<a class = "btn btn-primary addNewRow" id = "addtwo" ><i class = "fa fa-plus"></i></a>
JS и сценарий PHP, который у меня есть.
<script>
var count=1;
$("#addtwo").click(function(){
var html = "<tr class='distributorItemDetails'><td><div class='form-group'><select class='item-details form-control select2' name='items["+count+"][product_code]' style='width: 100%;'><option selected='selected' required>Select Product</option>"<?php foreach ($products as $product):?>" <option data-wholesaleprice = "<?= h($product->whole_sale_price)?>" data-distributormargin = "<?= h($product->distributor_margin)?>" data-stdbonus = "<?= h($product->standard_bonus_minimum_qty."':'".$product->standard_bonus_free_issues)?>" data-standard_bonus_minimum_qty = "<?= h($product->standard_bonus_minimum_qty)?>" data-standard_bonus_free_issues = "<?= h($product->standard_bonus_free_issues)?>" data-minqty = "<?= h($product->minimum_qty_to_apply_special_bonus)?>" data-scplbonus = "<?= h($product->special_bonus_minimum_qty."':'".$product->special_bonus_free_issues)?>" data-special_bonus_minimum_qty = "<?= h($product->special_bonus_minimum_qty)?>" data-special_bonus_free_issues = "<?= h($product->special_bonus_free_issues)?>" data-casesize = "<?= h($product->case_size)?>" value = "<?= h($product->product_code)?>" required>"<?= h($product->product_code)?>"</option>"<?php endforeach; ?>"'</select></div></td><div class='form-group'><input type='number' class='form-control val-wholesaleprice' name='items["+count+"][wholesale_price]' required min='0' step='any' readonly></div></td><td><div class='form-group'><input type='number' class='form-control val-distributormargin' name='items["+count+"][distributor_margin]' required min='0' step='any' readonly></div></td><td><div class='form-grou'><input type='number' class='form-control val-distributorprice' name='items["+count+"][distributor_price]' readonly></div></td><td><div class='form-group'><input type='text' class='form-control val-sb' name='items["+count+"][standard_bonus]' readonly></div></td><td><div class='form-group'><input type='number' class='form-control val-minqty' name='items["+count+"][min_qty]' readonly></div></td><td><div class='form-group'><input type='text' class='form-control val-scplbonus' name='items["+count+"][special_bonus]' readonly></div></td><td><div class='form-group'><input type='number' class='form-control val-casesize' name='items["+count+"][case_size]' readonly></div></td><td><div class = "form-group"><input type='number' class='form-control val-noofcases' name='items["+count+"][no_of_cases]'></div></td><td><div class='form-group'><input type='number' class='form-control val-totalqty' name='items["+count+"][total_qty]' readonly></div></td><td><div class='form-group'><input type='number' class='form-control val-freeissues' name='items["+count+"][total_free_issues]' readonly></div></td><td><div class='form-group'><input type='number' class='form-control val-totalprice' name='items["+count+"][total_value]' readonly></div></td><td><div class='form-group'><input type='number' class='form-control val-currentqty' name='items["+count+"][balance_stock]'></div></td><td><div class='form-group'><input type='number' class='form-control val-stockvalue' name='items["+count+"][stock_value]' readonly></div></td></tr>";
$("#orderItems2").append(html);
count++;
});
отформатируйте свой код нормально. В вашем JS-скрипте есть только одна строка, которая очень длинная и трудная для чтения.
@quirimmo, подожди, я отредактирую код.
Просто чтобы быть действительно уверенным ... обрабатывается ли этот фрагмент кода javascript вообще php, прежде чем он будет доставлен клиенту (браузеру)? Другими словами: вы, являются, знаете, что вы можете нет встроить и выполнить код php в javascript?
@arkascha - вы можете встраивать и запускать PHP внутри JavaScript. Вы можете встроить и запустить PHP внутри текстового потока любой.
Привет, это обсуждается на stackoverflow.com/questions/3352576/…
@Quentin Очень забавно. Вы действительно думаете, что здесь это помогает?
@arkascha - Я не шутил, ты просто ошибался.
@CertainPerformance код слишком длинный, чтобы скопировать его сюда. Дублируется вот так - i.imgur.com/lCTRINC.png
@arkascha На данный момент не совсем понятно, пытается ли OP использовать выполнять PHP изнутри JS (очевидно, неправильно) или печатать текст из PHP для его JS (неэлегантно, но нормально, если синтаксис обрабатывается правильно)
@KasunWijesekara Невозможно легко отладить изображение без текста. Посмотрите, какой номер столбца вызывает ошибку, а затем посмотрите на JS там.
@arkascha, подождите, я отредактирую свой код, чтобы показать, какую динамическую строку я пытаюсь получить. Таким образом, в основном строка имеет раскрывающийся список, который извлекает данные в соответствии с опцией раскрывающегося списка. Я собираюсь добавить код в строку по умолчанию, которую пытаюсь сгенерировать.
Проверьте сейчас, я редактировал вопрос. Итак, добавленный мной фрагмент кода - это статические строки, которые у меня есть в приложении. Мне нужно получить больше этих строк, когда я нажимаю кнопку.
@CertainPerformance Конечно, это вопрос, который я пытался выяснить в своем комментарии.
Вы не ответили на мой первоначальный вопрос. Для меня это как-то выглядит так, будто вы пытаетесь запустить php изнутри javascript. Что не сработает.
@arkascha да, я пытаюсь это сделать. Проверю приколотую нить и найду другой способ. Спасибо за помощь ребята!
@Quentin Да, вы правы с формальной точки зрения. Я попытался выяснить, есть ли у OP очевидная проблема размещения буквального кода php внутри javascript, который должен выполняться на стороне клиента, или этот код php должен обрабатываться при доставке кода клиенту, где должен быть javascript выполнен. Я думал, что это ясно из моего вопроса. Я только попытался выразить свое чувство, что то, как вы сформулировали свое исправление, не помогает ОП, учитывая, что, скорее всего, у него нет многолетнего опыта. Извините, если я неправильно сформулировал свою реакцию и оттолкнул вас.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Как выглядит отрендеренный
<script>после обработки PHP? Ошибка там.