2017-02-21 10 views
0

私はajaxレスポンスに問題があります。私はサーバーにJsonを送信するajaxリクエストを持っており、応答もjsonを返します。Jquery responseText undefined

レスポンスを受信しましたが、responseTextに届きません。

Cannot read property 'responseText' of undefined

が、console.log(posts)印刷このようなすべての応答: enter image description here

私はGoogleで検索して

$('#outside').click(function() { 
    var formData = '{"nin":"3","etype":"iso","perror":"1000","filename":"C:/Users/Mary/workspace/tdiclient/helloworld.txt"}'// _ sono i due punti e -e il bckslash 
    var response = ''; 
    var posts= $.ajax({ 
    headers: { 
     'Accept': 'application/json', 
     'Content-Type': 'application/json', 
    }, 
    'url' : 'http://localhost:8080/com.tdi/rest/tdi/newcontent/parameters', 
    'type' : 'POST', 
    'data' : formData, 
    responseText: { 
     success: true, 
     mode: "Online" 
    } 
    }) 

    console.log(posts); 
    if(posts.readyState == '1'){ 
    alert(posts.responseText); 
    } 
}); 

問題は、私は次のエラーを取得することである:ここでは以下の私のコードがあります私は多くのソリューションを試しましたが、解決策を見つけることができません

+0

ネイティブのXHRオブジェクトとそのためのJQueryラッパーが混在しているようです。あなたは 'succes 'コールバック関数を設定するのではなく、なぜあなたのコードに' responseText'を定義していますか? –

+0

[非同期呼び出しからの応答を返すにはどうすればよいですか?](http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) –

+0

@mary:あなたが指定したコード例では、エラーはありません。 '$ .ajax()'メソッドは 'posts'にオブジェクトを返すので、' posts.responseText'はそのエラーを生成しません。もちろん、あなたが望むデータがないかもしれません。 –

答えて

0

私はあなたの使い方について少し混乱していると思います彼は$.ajax()方法。試してみてください:

$('#outside').click(function() { 
    var formData = '{"nin":"3","etype":"iso","perror":"1000","filename":"C:/Users/Mary/workspace/tdiclient/helloworld.txt"}'// _ sono i due punti e -e il bckslash 
    var response = ''; 
    var posts = $.ajax({ 
    headers: { 
     'Accept': 'application/json', 
     'Content-Type': 'application/json', 
    }, 
    'url' : 'http://localhost:8080/com.tdi/rest/tdi/newcontent/parameters', 
    'type' : 'POST', 
    'data' : formData 
    }) 

    posts.done(function(res){ 
    console.log(res) // res should be your responseText 
    }) 
}); 

また、あなたのヘッダーが有効であるとは確信していません。たぶん誰かがそれについてコメントすることができます。

+0

私はこれを試しましたが、コンソールには何も印刷しません。 – mary

+0

プロパティsuccess/always/errorも試してみましたが、常に 'undefined' – mary

0

console.logには、$.ajax()によって返されたjqXHRオブジェクトへの参照があるため、特別なケースがあります。また、リファレンスであるため、後でDevToolsがオブジェクト(または配列)の内容を表示することもあります。

主な問題は、$.ajaxで非同期でリクエストを送信した後にresponseTextに直接アクセスしようとしていることです。プロパティresponseTextには、要求が満たされた後の応答の内容が含まれます。これを処理するには、要求が成功した後に実行されるコールバックを使用する必要があります。 jqXHRオブジェクトは、ファンクションを引数とするメソッドdoneを提供します。このファンクションは、要求が成功したときに実行されます。それは$.ajax()のための受け入れオプションではありませんので、私はアヤックスconfigオブジェクトにresponseTextを削除:

$('#outside').click(function() { 
    var formData = '{"nin":"3","etype":"iso","perror":"1000","filename":"C:/Users/Mary/workspace/tdiclient/helloworld.txt"}'// _ sono i due punti e -e il bckslash 
    var response = ''; 
    var posts= $.ajax({ 
    headers: { 
     'Accept': 'application/json', 
     'Content-Type': 'application/json', 
    }, 
    'url' : 'http://localhost:8080/com.tdi/rest/tdi/newcontent/parameters', 
    'type' : 'POST', 
    'data' : formData 
    }) 

    posts.done(function (data) { 
    console.log(data); 
    alert(data); 
    }) 
}); 

注:ここでは

は、あなたがそれを行うことができる方法の例です。