1

私は ajax と grails を使用しようとしています。このページは独立している必要があるため、gsp タグは使用できず、純粋な HTML のみが使用されます。

<head>
    <title>Teste</title>
    <script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>

</head>
<body>
    <form>
        <fieldset>
            <legend>Test</legend>
            <label>User:
                <input type="text" name="username" />
            </label>
            <label>Code:
                <input type="text" name="code" />
            </label>
            <input type="submit" value="Enviar" />
        </fieldset>
    </form>
<script>

    $("form").submit(function() {
        $.ajax({
          type: "POST",
          url: "http://localhost:9091/teste/paciente/index",
          dataType: "text",
          data: $(this).serialize(),
          success: function(data) {alert("oi")},
          error:function (xhr, ajaxOptions, thrownError){
            alert(xhr.status);
            alert(thrownError);
          }  

        })
        return false;
    })
</script>
</body>

グレイルズ

 class PacienteController {

        def index = {
            def username = params.username
            def code = params.code

            //response.contentType = "application/"
            render text: 'sent successfully', contentType: 'text/plain'

        }
    }

コントローラーをデバッグできますが、その後、jQuery からエラー (空のメッセージ) が表示されます。Grails が舞台裏で何をしているのかはわかりませんが、データをまったく返すことができません。私が逃したものは何ですか?

4

1 に答える 1

3

これはクロスドメイン AJAX の問題です。標準の AJAX は、要求が行われたのと同じドメインにデータを返すように制限されています。JSONP を使用してこれを回避できますが、データを JSON として返す必要があります。

したがって、これを行うようにコントローラーを変更できます。

def result = ['status': 'sent successfully']
render "${params.callback}(${result as JSON})"

そこparams.callbackには、リクエストによって自動的に作成および送信されるコールバック関数があります。

リクエストに関する限り、変更する必要があるのはそれだけだと思いますがdataType: 'jsonp'、私は決してその部分の専門家ではありません. さらに必要な場合は、 jQuery ドキュメントを参照してください...

于 2012-08-02T06:27:27.067 に答える