2

この JQuery Ajax フォームがあります。

$('#modal-body-sign-in').on('submit', '#sign-in', function(e) {
        e.preventDefault();
        var data = $(this).serialize();
        var url = $(this).attr('action');
        $.ajax({
            //this is the php file that processes the data and send mail
            url : url,
            type : "POST",
            data : data,
            dataType: "html",
            //Do not cache the page
            cache : false,
            //success
            success : function(data) {
                //console.log(data.content);

                console.log($(data));
                //$('#modal-body-sign-in').html(data);
            }
        });
    })

応答では、私console.log(data); in the console it shows me the responded htmlがこれを行うconsole.log($(data));と、このエラーが発生します

不明なエラー: 構文エラー、認識できない式:

<html>
<head>
<style>
ul {
    margin: 0%;
}

ul li {
    display: inline;
    list-style-type: none;
    float: left;
}
</style>
<title>Insert title here</title>
</head>
<body>
    <!--  Ajax Container. DO NOT REMOVE THE DIV CONTENT  FOR AJAX ACCESS! -->
    <div id="content">
        <div id="modal-body">

            <form id="doLogin" name="doLogin" action="/HitPlay/doLogin" method="post">

                <fieldset>
                    <ul id="doLogin_" class="errorMessage">
            <li><span>Incorrect username or password</span></li>    </ul>

                <br/>           

                <br/>

                    <label>Username</label>                 
                    <input type="text" name="userBean.username" value="" id="doLogin_userBean_username"/>
                    <br/>
                    <label>Password</label>
                    <input type="password" name="userBean.password" id="doLogin_userBean_password"/>
                    <br />

                    <input type="submit" id="doLogin_0" value="Submit"/>

                </fieldset>
            </form>





        </div>

    </div>
</body>
</html> jquery-1.9.0.min.js:2
a.error jquery-1.9.0.min.js:2
f jquery-1.9.0.min.js:2
x jquery-1.9.0.min.js:2
a jquery-1.9.0.min.js:2
st.fn.extend.find jquery-1.9.0.min.js:2
st.fn.st.init jquery-1.9.0.min.js:1
st jquery-1.9.0.min.js:1
$.ajax.success localhost:59
f jquery-1.9.0.min.js:1
p.fireWith jquery-1.9.0.min.js:1
r jquery-1.9.0.min.js:3
r

私はこれをやっていた

  $(data) 

応答された HTML ページのフラグメントを取得したいため

4

2 に答える 2

18

jQuery 1.9.x にアップグレードしてから、まったく同じ問題が発生しました。実際には、単純な $(data) がクラッシュを生成します。他には何もありません。以前にこの問題が数回ありました (1.9 より前のバージョンはありませんでした) が、その問題を覚えていません...

とにかく、それは完全にブロックされた問題です...その理由と修正をまだ探しています。

編集:

私がそれをしている場合:

$.ajax('/',function(html){
  html = $('<div></div>').append(html);
  $(html);
});

それは正常に動作します。私が行った場合 :

$.ajax('/',function(html){
  $(html);
});

(FFエラーコンソールを介して)私に与えます:

Erreur : Error: Syntax error, unrecognized expression: <div id="...">(...)
jquery.min.js - line : 4

編集2:

解決策が見つかりました...長い検索とテストの後: http://stage.jquery.com/upgrade-guide/1.9/#jquery-htmlstring-versus-jquery-selectorstring

だから私は今のようなことをします:

$.ajax('/',function(html){
  $($.parseHTML(html));
});

とにかく、jQuery は常に最初の要素と 1 つを混同しますが、少なくとも機能します

于 2013-02-26T12:50:02.020 に答える
3

jQuery1.9 を使用している場合、ロードされるコンテンツに問題がある可能性があります。応答の最初の文字が< [AKA未満記号]であることを要求する新しい更新があります。空白でもこれが壊れて、恐ろしい「Uncaught Error: Syntax error, unrecognized expression:」エラーがスローされます。

上記の回避策を使用する前に、これを確認することをお勧めします。バグではなく、セキュリティの取り組みです。

http://jquery.com/upgrade-guide/1.9/#jquery-htmlstring-versus-jquery-selectorstring

于 2013-04-30T17:49:20.590 に答える