0

私はSenchaTouchを初めて使用します。Sencha Touchの「GettingStarted」サンプルビデオ(http://docs.sencha.com/touch/2-0/#!/guide/getting_started)に従いました。この例では、ビデオで未定義のままになっているphp関数を呼び出すお問い合わせフォーム(コードは次のとおり)があり、ファイルが見つからないコンソールエラーが発生します。PHP関数を追加すると、次のコンソールエラーが発生します。

「キャッチされないエラー:無効なJSON文字列をデコードしようとしています:」

ファイルが空の場合でも、このエラーが発生します。誰かが私が間違っていることを知っていますか?または、Senchaからphp関数を呼び出す方法を説明するチュートリアルへのポインタはありますか?

php関数がどのように呼び出されるかを確認するための連絡フォームコード:

Ext.define('GS.view.Contact', {
    extend:  'Ext.form.Panel',
    xtype:  'contactform',

    requires:  [
        'Ext.form.FieldSet',
        'Ext.field.Email'
        ],

    config:  {
        title:  'Contact',
        iconCls:  'user',
        **url:  'php/Contact.php',**

        items:  [
            {
                xtype:  'fieldset',
                title:  'Contact Us',
                instructions:  '(email is not required)',
                items:  [
                    {
                        xtype:  'textfield',
                        name:  'name',
                        label:  'Name'
                    },
                    {
                        xtype:  'emailfield',
                        name:  'email',
                        label:  'Email'
                    },
                    {
                        xtype:  'textareafield',
                        name:  'message',
                        label:  'Message'
                    }
                ]

            },

            {
                xtype:  'button',
                text:  'Send',
                ui:  'confirm',
                **handler:  function(){
                    this.up('contactform').submit();**
                    }
            }
        ]
    }
});
4

2 に答える 2

0

そのエラーはかなり自明です。呼び出しているPHPスクリプトの出力は、適切にフォーマットされたJSONではありません。たとえば、HTTP応答に正しいJSONヘッダーを配置する必要があります。また、実際のデータがJSONであることを確認する必要もあります。

PHPファイルをこのようなものに置き換えて、エラーを回避できるかどうかを確認できますか?

<?php
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');
echo "{\"success\":true, \"message\":\"Hello World\"}";
?>
于 2012-09-27T03:25:24.060 に答える
0

エラーは、受信したJSONが無効であることを示しています。PHPページが有効なJSONを作成していることを確認してください。有効なJSONであることがわかっているハードコードされた文字列を出力することから始めることができます。

また、次のヘッダーを使用して、ページが正しいコンテンツタイプをブラウザに送信していることを確認してください。

header('Cache-Control: no-cache, must-revalidate');
header("content-type:application/json");
于 2012-09-27T12:07:56.653 に答える