2013-06-19 12 views
5

Googleで検索しましたが、このトピックについてはstackoverflowで多くの質問があります。 「ポストメソッドで送信されていないデータ」など 私の質問に疑問はありません。ajax php javascript:POSTメソッドを使用しているときのエラー

他の質問とほとんど同じです。

のFirefox(V21):

InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable. 
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); 

クローム(V27):これらはエラーMSGある要求がGETによって送信されると

Uncaught Error: InvalidStateError: DOM Exception 11 

、エラーはありません。そして、すべてのGETデータはうまく受け取りました。

しかし、POST + setRequestHeaderで送信された場合、上記のようなエラーが発生します。 setRequestHeaderを削除すると、エラーはなくなります。エラーは発生しませんが、POSTデータは受信されません。 i print_r($_POST);配列が空です

質問が更新されました。ここでは、発信者である:

goServer({ 
    url  : 'users/sign-in.php', 
    method : 'POST', 
    data : 'randomId=' + randomId + '&name=' + name + '&password=' + password, 
    done : function(response) { 
     alert(response); 
    }, 
    fail : function(response) { 
     alert(response); 
    } 
}); 

は、そしてここで(申し訳ありませんが、長い行)の関数である:

function randomString() { 
    var str = new Date().getTime(), 
    str2 = Math.random(); 

    str  = str.toString(); 
    str2 = str2.toString(); 
    str2 = str2.substring(2,7); 
    str  += str2; 

    return str; 
} 



function goServer(opts) { 
    var xhr = new XMLHttpRequest(); 
    xhr.onreadystatechange = requestComplete; 

    function requestComplete() { 
     if (xhr.readyState === 4) { 
      if (xhr.status === 200) { 
       opts.done(xhr.responseText); 
      } else { 
       opts.fail(xhr.responseText); 
      } 
     } 
    } 

    if (!opts.method || opts.method === undefined) { 
     opts.method = "GET"; 
    } 

    if (!opts.cache || opts.cache === undefined) { 
     opts.cache = false; 
    } 

    if (opts.cache === false) { 
     opts.url += '?nocache=' + randomString(); 
    } else { 
     opts.url += '?nocache=false'; 
    } 

    if (opts.method === "GET") { 
     if (opts.data !== '' && opts.data !== undefined) { 
      opts.url += '&' + opts.data; 
     } 
     opts.data = ''; 
    } else { 
     xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); 
    } 

    xhr.open(opts.method, opts.url, true); 
    xhr.send(opts.data); 

} 

ノート、データパラメータ(opts.dataが)、それはによって送信されたURLに設定されています取得する。 POSTによって送信されると、パラメータはxhr.send(opts.data)に設定されます。

質問:POSTデータを正しく取得するにはどうすればよいですか?あなたは、キー/値のペアを含む文字列でなければなりませんopts.dataまたxhr.open

を呼び出した後

はあなたに

+1

投稿コード – DevZer0

+1

'print_r(file_get_contents( 'php:// input'));' <あなたのPOSTデータはここにあります。しかし、それは問題を解決しません。投稿コードをお願いします。 – BlitZ

+0

@CORRUPT、質問が更新されました。 –

答えて

12

コールxhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');ありがとうございます。例えばkey=value&method=post

+0

Whoaaa、あなたは本当です!あなたは本当です、はい、問題は解決しました。ありがとうございました –

+0

あなたが言ったように、 'xhr.open'の後に' setRequestHeader( 'Content-type'、 'application/x-www-form-urlencoded')を呼び出すと動作します!もう一度、ありがとう、ありがとう! –

関連する問題