Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php “如何逃离”;jQuery代码中的[”字符_Php_Javascript_Jquery - Fatal编程技术网

Php “如何逃离”;jQuery代码中的[”字符

Php “如何逃离”;jQuery代码中的[”字符,php,javascript,jquery,Php,Javascript,Jquery,我试图在一些输入元素中设置一些值,但我的代码不起作用。请参阅下面的代码: <?php foreach($languages as $language): ?> $('input[name="product_description\\[<?php echo $language["language_id"]; ?>\\]\\[name\\]]"').val(data.items[0]['volumeInfo']['title']); $('input[name="

我试图在一些输入元素中设置一些值,但我的代码不起作用。请参阅下面的代码:

<?php foreach($languages as $language): ?>
   $('input[name="product_description\\[<?php echo $language["language_id"]; ?>\\]\\[name\\]]"').val(data.items[0]['volumeInfo']['title']);
   $('input[name="product_description\\[<?php echo $language["language_id"]; ?>\\]\\[description\\]]"').val(data.items[0]['volumeInfo']['description']);
<?php endforeach ?>

$('input[name=“product\\\[\\]\\[name\\]]”)val(data.items[0]['volumeInfo']['title']);
$('input[name=“product\\\[\\]\\[description\\]]”)val(data.items[0]['volumeInfo']['description']);
HTML标记如下所示:

<input type="text" value="" size="100" name="product_description[1][name]">


有什么问题吗?jQuery不返回任何错误和数据。项[0]['volumeInfo']['title']有值,所以我做错了什么?

不要取消PHP块之外的字符的scape,这部分代码不会被处理并按原样传递到浏览器:

<?php foreach($languages as $language): ?>
   $('input[name="product_description\[<?php echo $language["language_id"]; ?>\]\[name\]]"').val(data.items[0]['volumeInfo']['title']);
   $('input[name="product_description\[<?php echo $language["language_id"]; ?>\]\[description\]]"').val(data.items[0]['volumeInfo']['description']);
<?php endforeach ?>

$('input[name=“product\[\]\[name\]]”)val(data.items[0]['volumeInfo']['title']);
$('input[name=“product\\[\]\[description\]]”).val(data.items[0]['volumeInfo']['description']);

不要取消显示PHP块之外的字符,该部分代码不会被处理并按原样传递给浏览器:

<?php foreach($languages as $language): ?>
   $('input[name="product_description\[<?php echo $language["language_id"]; ?>\]\[name\]]"').val(data.items[0]['volumeInfo']['title']);
   $('input[name="product_description\[<?php echo $language["language_id"]; ?>\]\[description\]]"').val(data.items[0]['volumeInfo']['description']);
<?php endforeach ?>

$('input[name=“product\[\]\[name\]]”)val(data.items[0]['volumeInfo']['title']);
$('input[name=“product\\[\]\[description\]]”).val(data.items[0]['volumeInfo']['description']);

尽管有一些重要的建议,建议您更好地使用jQuery,但如何使用更好的PHP,并避免到处切换上下文?它杂乱无章,难以阅读,而且(如您的问题所示)可能会导致标点错误

<?php

  $fmt="\$('input[name=\"product_description[%s][%s]]\"').val(data.items[0]['volumeInfo']['%s']);\n";

  foreach ($languages as $language) {
    printf($fmt, $language["language_id"], "name", "title");
    printf($fmt, $language["language_id"], "description", "description");
  }

?>

尽管有一些重要的建议,建议您更好地使用jQuery,但如何使用更好的PHP,并避免到处切换上下文?它杂乱无章,难以阅读,而且(如您的问题所示)可能会导致标点错误

<?php

  $fmt="\$('input[name=\"product_description[%s][%s]]\"').val(data.items[0]['volumeInfo']['%s']);\n";

  foreach ($languages as $language) {
    printf($fmt, $language["language_id"], "name", "title");
    printf($fmt, $language["language_id"], "description", "description");
  }

?>

不要将HTML、PHP和JavaScript混合在4行中

行数少不是更好的代码,混合语言是更糟糕的代码。尽最大努力分离关注点,这会使您的代码模块化且更易于使用。在关注点分离良好的代码中不会出现类似的错误

您需要考虑的第一件事是:“为什么我要编写代码来编写更多的代码?”

在一天结束时,您只需尝试使用不同的foo和bar值多次执行此操作:

var inputElement = $('input[name="product_description[foo][bar]"]');
inputElement.val(data.items[0]['volumeInfo']['title']);
这显然适合作为JavaScript函数(而不是PHP代码):

仍然不是最干净的,但是嘿,现在你已经有了JavaScript通过的一个点

好的,现在您只需要向它提供一些数据,如果您有一个数组,可以这样做,例如:

var baz=[ { “语言id”:“foo1”, “barVal”:“bar1” }, { “语言id”:“foo2”, “barVal”:“bar2” }, { “语言id”:“foo3”, “barVal”:“bar3” }, ]

嘿,您可以通过以下方式在PHP中生成:

json_encode($languages); //Assuming you've set up a value for barVal...
所以现在您的jQuery只需要循环遍历它

$.each(baz, function(key, val){
    fooBar(val["language_id"], val["barVal"]);
})
那么,你的整个事情会是什么样子

//Whatever.php
var baz = <?php echo json_encode($languages); ?>;
function fooBar(foo, bar) {
  var inputElement = $('input[name="product_description[' + foo + '][' + bar+ ']"]');
  inputElement.val(data.items[0]['volumeInfo'][bar]);
}
$.each(baz, function(key, val){
    fooBar(val["language_id"], val["barVal"]);
})
//Whatever.php
var baz=;
函数fooBar(foo,bar){
var-inputElement=$('input[name=“product_description['+foo+']['+bar+']]”);
val(data.items[0]['volumeInfo'][bar]);
}
$。每个(baz,功能(键,val){
fooBar(val[“language_id”]、val[“barVal”]);
})
我在查看您的代码时遇到了一些问题…您没有提供足够的信息让我了解您到底在做什么。此外,我怀疑您不想放置“
数据。项[0]['volumeInfo']
”但是这就是你的代码所说的,所以我用它运行了。你应该能够查看上面的代码,找到一些方法让它做你想做的事情

不要在生产中使用变量foo、bar、baz或buz。这些是仅作为示例代码的占位符名称。使用描述性变量名称,这些名称背后没有隐藏的含义(以防您以前没有见过这些名称)

不要混用代码,如果混用,请尽可能地分离关注点。jQueryAPI中记录了转义行为,但从PHP中添加另一层转义复杂性会使您陷入这种令人沮丧的境地。通过这样做,您可以在将来避免这种痛苦

使用名称和数组作为这样的输入值真的一点也不理想。请阅读jQuery及其构建的本机DOM的一些API,看看是否可以找到更好的方法。它是存在的

最后,我没有测试它或验证它是否运行,但代码结构是您应该遵循的。我不是为您编写代码,我向您展示了一种结构,以便在您必须在6个月内维护它时,以保持头发完整的方式完成这项工作


祝你好运。

不要将HTML、PHP和JavaScript混合在4行中

行数少不是更好的代码,混合语言是更糟糕的代码。尽最大努力分离关注点,这会使您的代码模块化且更易于使用。在关注点分离良好的代码中不会出现类似的错误

您需要考虑的第一件事是:“为什么我要编写代码来编写更多的代码?”

在一天结束时,您只需尝试使用不同的foo和bar值多次执行此操作:

var inputElement = $('input[name="product_description[foo][bar]"]');
inputElement.val(data.items[0]['volumeInfo']['title']);
这显然适合作为JavaScript函数(而不是PHP代码):

仍然不是最干净的,但是嘿,现在你已经有了JavaScript通过的一个点

好的,现在您只需要向它提供一些数据,如果您有一个数组,可以这样做,例如:

var baz=[ { “语言id”:“foo1”, “barVal”:“bar1” }, { “语言id”:“foo2”, “barVal”:“bar2” }, { “语言id”:“foo3”, “barVal”:“bar3” }, ]

嘿,您可以通过以下方式在PHP中生成:

json_encode($languages); //Assuming you've set up a value for barVal...
所以现在您的jQuery只需要循环遍历它

$.each(baz, function(key, val){
    fooBar(val["language_id"], val["barVal"]);
})
那么,你的整个事情会是什么样子

//Whatever.php
var baz = <?php echo json_encode($languages); ?>;
function fooBar(foo, bar) {
  var inputElement = $('input[name="product_description[' + foo + '][' + bar+ ']"]');
  inputElement.val(data.items[0]['volumeInfo'][bar]);
}
$.each(baz, function(key, val){
    fooBar(val["language_id"], val["barVal"]);
})
//Whatever.php
变量b