2012-01-06 18 views
1

誰かに次の問題がありますか?インスペクタでjQuery TypeError: '定義されていません'はAJAXの関数ではありません。

jQuery(document).ready(function($) { 
    $("#ajax-form").submit(function(e) { 
     e.preventDefault(); 
     $("#result").html('Sending…').fadeIn(); 
     var fields = '{'; 
     $('#ajax-form').filter(':input').each(function() { 
      fields = fields + $(this).attr("name")+' : '+$(this).val()+', '; 
     }); 
     fields = fields + '}'; 
     url = '/scripts/form-submit.php'; 

     $.post(url,fields, function(data, respText, xhr){ 
      alert('ok-'+data+'-'+respText+'-'+xhr); 
     }) 
     .error(function(d) { 
      alert('no good'); 
     }); 
    }); 
}); 

、私が提出する上で次のエラーを取得:.ERRORをクローズライン(});)上

TypeError: 'undefined' is not a function (near '....error(function(d) {...')

。それは17行です。

送信時には、「ok--success-[object XMLHttpRequest]」と表示されます。私が提出しているスクリプトは、AJAXの応答データとして電子メールを送って「それは成功しました」と返信され、電子メールは送信されず応答も受信されません。私はスクリプトが動作することを知っています。なぜなら私はそれを定期的に(非同期ではなく)ポストするので、すべて正常に動作するからです。

洞察力は非常に高く評価されています。ありがとう。ポストデータ

$('#form').submit(function(){ 
      $.ajax({ 
       type: "POST", 
       url: "/scripts/form-submit.php", 
       data: $(this).serialize(), 
       success:function(response){ 
        alert('ok-'+data+'-'+respText+'-'+xhr); 
        alert("Details saved successfully!!!"); 
       }, 
       error: function (request, status, error) { 
        alert(request.responseText); 
       }     
      }); 
     }) 
+2

なぜ手動で 'fields'を手動で作成するのではなく、[serialize](http://api.jquery.com/serialize/)を使用してください。 – diEcho

+0

よろしくお願いします。実際にサーバースクリプトが動作しました(電子メールが送信されました)が、まだTypeErrorエラーが表示されます。何が原因なのか? – BBB

答えて

6

使用serializeは、私はこの問題は、JSONデータであるように思われ、あなたの変数fieldsにあると思いますが、あなたは文字列として引用符で値をラップすることができなかった ここでjQueryのからの参照がある:

jQuery.post(url [, data] [, success(data, textStatus, jqXHR)] [, dataType]) ... dataTypeThe type of data expected from the server. Default: Intelligent Guess (xml, json, script, text, html)

それはJSONとしてあなたのデータ型を扱いますが、実際にそれは私ですnvalid

+0

ありがとう!それはうまくいった。 – BBB

1

を生成する

+0

ありがとう、私はそれがはるかに簡単だったので、serialize()メソッドを使用するように切り替えました。あなたは正しいですが、フィールドは無効です。 – BBB

関連する問題