0

ファイアバグにエラーがあります:

SyntaxError: missing ] after element list
var o99_images = [ C:\Documents and Settings\XXXX\Desktop\xampp\htdocs\www.s
--------------------^

問題の変数はパスの配列(ローカル)です。配列の例は次のようになります。

var o99_images = [C:\Documents and Settings\XX\XX\xampp\htdocs\XX\XX\uploads\images_to_post\2000501.freddy.lulu.milano.jpg,C:\Documents and Settings\XX\XX\xampp\htdocs\XX\XX\uploads\images_to_post\4147941_460s.jpg,C:\Documents and Settings\XX\XX\xampp\htdocs\XX\XX\uploads\images_to_post\732331_26687367.jpg];

私は決してjavascriptマスターではありませんが、問題は文字列としてのパス自体(おそらく:?)であると思われます。これは、数値の配列のみで同じことを行う場合(たとえばvar o99_images = [12,14,15,18]、問題がないため)です。

これはJSON関数です:

function O99_Do_Action( id ) {
                $.ajax({
                    type: 'POST',
                    url: ajaxurl,
                    data: { action: "ajaxresponse", id: id },
                    success: function( response ) {
                        if ( response.success ) {
                            O99_Do_ActionUpdateStatus( id, true, response );
                        }
                        else {
                            O99_Do_ActionUpdateStatus( id, false, response );
                        }

                        if ( o99_images.length && o99_continue ) {
                            O99_Do_Action( o99_images.shift() );
                        }
                        else {
                            O99_Do_ActionFinishUp();
                        }
                    },
                    error: function( response ) {
                        O99_Do_ActionUpdateStatus( id, false, response );

                        if ( o99_images.length && o99_continue ) {
                            O99_Do_Action( o99_images.shift() );
                        } 
                        else {
                            O99_Do_ActionFinishUp();
                        }
                    }
                });
            }

そしてその前に、vars:

jQuery(document).ready(function($){
            var i;
            var o99_images = [<?php echo $ids; ?>];
            var o99_total = o99_images.length;
            var o99_count = 1;

                        //... continue vars and function

ご覧のvarとおり、問題はphpで生成されています。(implode()文字列と,

それで、パス文字列自体が問題ですか?もしそうなら、どのようにしてそのような変数へのパスを渡すことができますか?

解決済み: @Aatif Farooqのおかげで、私は正しい方向に進んでくれました。答えは、クォーア"とエスケープの問題の両方を処理するjson_encode()でした//

addslashes()php関数を検索しているときに、 json_encode()..を見つけました。その間に、@slashingweaponがそれを正しく取得しました..

echo json_encode($ids);
4

3 に答える 3

2

パスは実際には文字列であるため、パスを一重引用符または二重引用符で囲む必要があります。お気に入り:

'c://any-path/to/file.php'

あなたの場合、次のようになります。

var o99_images = ['C:\Documents and Settings\XX\XX\xampp\htdocs\XX\XX\uploads\images_to_post\2000501.freddy.lulu.milano.jpg','C:\Documents and Settings\XX\XX\xampp\htdocs\XX\XX\uploads\images_to_post\4147941_460s.jpg','C:\Documents and Settings\XX\XX\xampp\htdocs\XX\XX\uploads\images_to_post\732331_26687367.jpg'];
于 2012-11-17T16:17:32.443 に答える
1

テキスト /string データは、次のように単純引用符または二重引用符で囲む必要があります。

var o99_images = ['C:\Documents and Settings\XX\XX\xampp\htdocs\XX\XX\uploads\images_to_post\2000501.freddy.lulu.milano.jpg', 'C:\Documents and Settings\XX\XX\xampp\htdocs\XX\XX\uploads\images_to_post\4147941_460s.jpg,C:\Documents and Settings\XX\XX\xampp\htdocs\XX\XX\uploads\images_to_post\732331_26687367.jpg'];

[5, 88, 8]数字を引用符で囲む必要がないため、数字で機能します。

于 2012-11-17T16:17:50.020 に答える
1

問題は、データのエンコード方法にあります。json_encode()PHP は、 PHP データを Javascript リテラルに変換したい場合にいつでも使用できる非常に便利な関数 を提供します。

たとえば、文字列を Javascript 文字列に変換する場合:

php > $x = 'C://some/series/of/path/segments';
php > echo json_encode($x);
"C:\/\/some\/series\/of\/path\/segments"

また、文字列の配列を文字列の Javascript 配列に変換する場合:

php > $x = array('a', 'b', 'c');
php > echo json_encode($x);
["a","b","c"]

数値、ブール値、および複雑なオブジェクトに対してもこれを行うことができます。引用、エスケープ、およびエンコーディングは処理されます。このトリックは、シリアル化できるすべての PHP データに対して機能します。周期的なオブジェクトやリソースでは機能しませんが、それ以外はすべて公正なゲームです.

したがって、おそらくimplode()データではなく、代わりに配列のままにしておく必要があります。次に、コードは次のようになります。

jQuery(document).ready(function($){
    var i;
    var o99_images = <?php echo json_encode($ids); ?>;
    var o99_total = o99_images.length;
    var o99_count = 1;
于 2012-11-17T16:36:11.863 に答える