Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Ajax、PHP和Javascript_Javascript_Php_Html_Ajax - Fatal编程技术网

使用Ajax、PHP和Javascript

使用Ajax、PHP和Javascript,javascript,php,html,ajax,Javascript,Php,Html,Ajax,我在任何方面、形状或形式上都不如你们中的大多数人接近或有经验。然而,与Javascript相比,我在PHP方面的经验稍好一些。所以,请原谅,如果我的代码看起来平庸或“新手” 无论如何,我有一个单一的页面,表单上有一个简单的输入框,然后是两个复选框。我第一次使用ajax,从某种意义上说,我能够让我的代码正常工作。在我的PHP代码中,我让它根据选中的复选框运行某些东西。但是,对于这个ajax代码(和/或PHP),当它执行我的代码时,它会运行我的所有代码,即使复选框是否选中。我在这里问你是否看到我做错

我在任何方面、形状或形式上都不如你们中的大多数人接近或有经验。然而,与Javascript相比,我在PHP方面的经验稍好一些。所以,请原谅,如果我的代码看起来平庸或“新手”

无论如何,我有一个单一的页面,表单上有一个简单的输入框,然后是两个复选框。我第一次使用ajax,从某种意义上说,我能够让我的代码正常工作。在我的PHP代码中,我让它根据选中的复选框运行某些东西。但是,对于这个ajax代码(和/或PHP),当它执行我的代码时,它会运行我的所有代码,即使复选框是否选中。我在这里问你是否看到我做错了什么:

[index.php->表单代码]

在下面输入tweet URL以开始使用该服务。
我们已成功完成您的请求,请立即查看twitter。或者,只需单击。
推特网址

我们喜欢或转发的推文的URL。例子:https://twitter.com/topIess/status/411632658683150336

那条推特你想要什么? 推数 宠儿 启动进程。。。
[index.php->javascript]

函数postStuff(){
//创建XMLHttpRequest对象
var hr=新的XMLHttpRequest();
//创建一些我们需要发送到PHP文件的变量
var fn=document.getElementById(“url”).value;
var ln=document.getElementById(“复选框-0”).value;
var url=“handle1.php”;
var ln1=document.getElementById(“复选框-1”).value;
var vars=“url=“+fn+”&retweet=“+ln+”&favorite=“+ln1;
hr.open(“POST”,url+”?x=“+nn+”&y=“+nn1,true”);
hr.setRequestHeader(“内容类型”、“应用程序/x-www-form-urlencoded”);
//访问XMLHttpRequest对象的onreadystatechange事件
hr.onreadystatechange=函数(){
如果(hr.readyState==4&&hr.status==200){
var return_data=hr.responseText;
document.getElementById(“status”).innerHTML=返回数据;
}
}
//立即将数据发送到PHP…并等待更新status div的响应
hr.send(vars);//实际执行请求
document.getElementById(“status”).innerHTML=“处理…”;
}
[handle1.php->my php代码]
在javascript中,您正在发布复选框的
属性,在这种情况下使用该属性是错误的(因为复选框的值总是相同的)。相反,您应该检查
checked
属性是否为true,这定义了复选框是否为选中状态。

您在哪些浏览器中测试过此功能?Firefox、Chrome和Safari。您应该将if条件置于循环之外。这并不能解决问题,但会使脚本稍微快一点。我是说最后两个循环。乔尼,谢谢你的建议!我在我的代码中改变了这一点,非常感谢。我已经将“值”改为“检查”,并理解输出为真/假。你对PHP有什么建议?检查类似于
$\u POST['retweet']=“true”
?@user2970029这取决于浏览器引擎如何字符串化布尔值,您还应该检查POST的值是否为
“1”
,而不仅仅是
“true”
<form method="post" class="form-horizontal">
<fieldset>

<!-- Form Name -->
<legend>Enter the tweet URL below to begin using the service.</legend>


<div id="ajaxDiv" class="alert alert-success">We've successfully completed your request, check twitter now. Or, simply click <a href="<?php echo $_POST['url']; ?>">here</a>.</div>

<!-- Text input-->
<div class="control-group">
  <label class="control-label" for="url">Tweet URL</label>
  <div class="controls">
    <input id="url" name="url" type="text" style="height:43px; width:100%; font-size:18px;" placeholder="" class="input-xlarge" required="">
    <p class="help-block">The URL of the tweet we are favouriting or retweeting. <span style="font-size:15px;">Example: https://twitter.com/topIess/status/411632658683150336</span></p>
  </div>
</div>

<!-- Multiple Checkboxes -->
<div class="control-group">
  <label class="control-label" for="checkboxes">What would you like for that tweet?</label>
  <div class="controls"  required="required">
    <label class="checkbox" for="checkboxes-0">
      <input type="checkbox" style="margin-top:15px;" name="retweet" id="checkboxes-0" value="Retweet">
      Retweets
    </label>
    <label class="checkbox" for="checkboxes-1">
      <input type="checkbox" name="favorite" style="margin-top:15px;" id="checkboxes-1" value="Favourite">
      Favourites
    </label>
  </div>
</div>

<!-- Button -->
<div class="control-group">
  <label class="control-label" for="submit"></label>
      <div class="controls">
    <button type="submit" onclick="postStuff();" class="btn btn-inverse">Start Process...    </button>
      </div>
</div>

</fieldset>
</form>
<div id="status"></div>
<script>
function postStuff(){
// Create our XMLHttpRequest object
var hr = new XMLHttpRequest();
// Create some variables we need to send to our PHP file
var fn = document.getElementById("url").value;
var ln = document.getElementById("checkboxes-0").value;
var url = "handle1.php";
var ln1 = document.getElementById("checkboxes-1").value;
var vars = "url="+fn+"&retweet="+ln+"&favorite="+ln1;
hr.open("POST", url+"?x="+nn+"&y="+nn1, true);
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
// Access the onreadystatechange event for the XMLHttpRequest object
hr.onreadystatechange = function() {
    if(hr.readyState == 4 && hr.status == 200) {
        var return_data = hr.responseText;
    document.getElementById("status").innerHTML = return_data;
    }
}
// Send the data to PHP now... and wait for response to update the status div
hr.send(vars); // Actually execute the request
document.getElementById("status").innerHTML = "Processing...";
}
</script>
<?php
/**
 * @file
 * User has successfully authenticated with Twitter. Access tokens saved to session and DB.
 */

require_once('twitteroauth/twitteroauth.php');
$con=mysqli_connect("host","user","","twtid");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$result = mysqli_query($con,"SELECT * FROM twitter");
while($row = mysqli_fetch_array($result, MYSQL_ASSOC)) {
        $connection[$row['id']] = new TwitterOAuth('ZG808c0pad0ar7wpgYPmA', 'BWHnOag1aWQtoYRBH5OtsI9m9Ghr3pTuMBo6z4ZNNP8', $row['key'], $row['secret']);
}
/* Create a TwitterOauth object with consumer/user tokens. */
/* $content = $access_token['oauth_token']. " " . $access_token['oauth_token_secret']; */
/* $content = $connection->get("account/verify_credentials"); */

$url1 = parse_url($_POST['url'], PHP_URL_PATH);
$url = explode("/", $url1);

 /* If method is set change API call made. Test is called by default. */
$method = 'statuses/retweet/'.$url[3];
$amt = 18;
$sub = rand(1,2);
$amt1 = $amt-$sub-1;
for ($x=1; $x<=$amt; $x++)
   {
if($_POST['retweet'] == "Retweet"){
$content = twitteroauth_row($method, $connection[$x]->post($method), $connection[$x]->http_code);
}
if($x == $amt) {
$done = "yes";
}
}

for ($x1=1; $x1<=$amt1; $x1++)
   {
if($_POST['favorite'] == "Favourite"){
$content = $connection[$x1]->post('favorites/create', array('id' => $url[3]));  
}
}