2014-10-02 77 views
0

我使用了以下技术为什么这个非常简单的跨域的jQuery AJAX不工作

  • jQuery Mobile的1.4.4
  • 构建一个移动应用程序的jQuery 2.1.1
  • 科尔多瓦3.6.3
  • 测试这对谷歌浏览器37桌面版

**真解**

如果您使用jQuery 1.8或更高版本,

记住.success,.error和.complete赞成.done,.fail和。总是不赞成的jQuery的1.8或更高

记得把AJAX确定指标一的$(document)内。就绪(),以确保它运行后的DOM完全准备好

链的回调处理程序是这样的:$。阿贾克斯()()完成.fail()总是();

以下是如何我终于去照料它,我不介意与任何人谁愿意在jQuery Mobile的,jQuery的1.8或更高的PhoneGap使用AJAX分享它,科尔多瓦

<html> 
<head> 
    <meta charset="utf-8"> 
    <link rel="stylesheet" href="css/jquery.mobile.structure-1.4.4.min.css" /> 
    <script src="js/jquery-2.1.1.min.js"></script> 
    <script src="js/jquery.mobile-1.4.4.min.js"></script> 
</head> 
<body> 

<form> 

<textarea name=userinput id=textarealol> </textarea> 

<input type="button" value="Write on the server!" id="mybutton"> 

</form> 

<script> 

$mybutton = $("#mybutton"); 
$textarealol = $("#textarealol"); 

$(document).ready( 
        function() 
        { 

$hearitbutton.click( 
         function(e) 
         {      
$.ajax(

{ 
    url  : "http://www.yourwebsite.com/yourpage.php", 
    type : "POST", 
    data : { comingover : $textarealol.val() }, 
} 

    ) 
.done(

    function(e) 
    { 
     alert("Successfully Done"); 
    } 
    ) 
.fail(

    function(e) 
    { 
     alert("ERRORNEOUS"); 
    } 
    ) 
.always(

    function(e) 
    { 
     alert("E.N.D. jQ Ajax"); 
    } 

    ); 

      }); }); // End of ready() and mybutton().click() 

</script> </body> </html> 

然后在你的PHP文件,输入将被存储在

$_POST['comingover'] 
+0

我只是ping'd的你在上面列出的URL,并得到这个错误警告:无法修改头信息 -/home/engli237/public_html/cdajax/sweetsuck已经发送的头文件(输出开始于/home/engli237/public_html/cdajax/sweetsuck.php:2)第4行的.php'难道你的服务器脚本有错误吗? – 2014-10-02 22:47:40

回答

0

记住它是JSONP,它需要回调,所以你需要返回回调函数。

像这样的东西应该工作:

<?php 
    header('Access-Control-Allow-Origin: *'); 

    $file = 'mytextfile.txt'; 
    $datvariable = $_POST['userinput']; 
    file_put_contents($file, $lala , FILE_APPEND | LOCK_EX); // Nothing wrong with this 

    $jsonp = false; 
    // Get the name of the callback function 
    if (isset($_POST['callback'])) { 
    $_POST['callback'] = strip_tags($_POST['callback']); 
    $jsonp = true; 

    $pre = $_POST['callback'] . '('; 
    $post = ');'; 
    } 

    // Replace ** some data if you want to ** with the data you wish to send to the 
    // callback function. 
    $json = json_encode(** some data if you want to **); 
    print(($jsonp) ? $pre . $json . $post : $json); 
?> 

如果你不想在回调发送任何数据,则只是返回回调不带参数:

// $json = json_encode(** some data if you want to **); // Remove this line. 
    print(($jsonp) ? $pre . $post : ''); 
+0

那么'**一些数据,如果你想**'应该被替换。这只是数据的容器(如果有的话),您想要使用回调函数返回。 – 2014-10-02 23:28:41

+0

Huttnen我终于明白了! – Robert 2014-10-03 03:31:55